Saltar al contenido

GRÁFICOS: origen de series variable


Jawisr

Recommended Posts

publicado

Buenos días,

Hoy necesito una pequeña ayuda para un tema que tengo que resolver en excel.

Voy a explicarlo de la manera más sencilla posible. Tengo un libro de excel con varias hojas (fichas.xslm), todas tienen un mismo gráfico series. El tema es que esas series salen de datos que están en otro libro distinto con varias hojas también (base de datos.xlsm).

Por ejemplo: el libro "fichas.xlsm" contiene hojas llamadas: peras, manzanas, plátanos. Y en cada hoja hay un gráfico que busca datos en el libro "base datos.xlsm" en el que hay las mismas hojas (peras, manzanas, plátanos) pero con tablas de datos.

La pregunta es: ¿puedo hacer que la ruta de origen de los datos esté vinculada a una celda? Es decir, si yo tengo:


[CENTER]=SERIES('[base datos.xlsm][B]Peras[/B]'!$B$4;;'[base datos.xlsm][B]Peras[/B]'!$C$4:$E$4;1),
[/CENTER]


[/CODE]

puedo poner "peras" en la celda A1 y y que la fórmula sea algo como

[CODE]

[CENTER]=SERIES('[base datos.xlsm][B]"&A1&"[/B]'!$B$4;;'[base datos.xlsm][B]"&A1&"[/B]'!$C$4:$E$4;1)
[/CENTER]


[/CODE]

La intención es que cada gráfico saque los datos de una hoja distinta de la base de datos según el nombre que se le dé en una celda.

(Adjunto un zip con los dos archivos base datos y fichas)

PD: sé que esto no tiene que ver directamente con VBA, pero he intentado utilizar los caracteres para unir texto y variables de VBA ( " & & ") como en el ejemplo y no lo he conseguido. Así que supongo que tendré que hacerlo con macros. Si pudiera hacerlo sin macros también me sirve.

Muchas gracias, si algo no ha quedado claro del todo preguntadme e intento alcarar.

Un saludo,

[color=blue]- - - - - Mensaje combinado - - - - -[/color]

Al final lo he hecho con una macro. Simplemente va hoja por hoja copiando la primera hoja y modifica las series de los gráficos según el nombre de la hoja en la que está.

Es relativamente sencillo:

[CODE]Sub Prueba1()
'
' Prueba1 Macro
'


Dim nombre As String
Dim hoja As Worksheet



For Each hoja In Worksheets

If hoja.Name = "Manzana" Then GoTo NoCopia:
ActiveWorkbook.Worksheets(1).Cells.Copy
hoja.Activate
hoja.Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False

NoCopia:
nombre = ActiveSheet.Name

ActiveSheet.ChartObjects(1).Activate
'Crea serie 1
ActiveChart.FullSeriesCollection(1).Name = "='[base datos.xlsm]" & nombre & "'!$B$4"
ActiveChart.FullSeriesCollection(1).Values = _
"='[base datos.xlsm]" & nombre & "'!$C$4:$E$4"

'Crea serie 2
ActiveChart.FullSeriesCollection(2).Name = "='[base datos.xlsm]" & nombre & "'!$B$5"
ActiveChart.FullSeriesCollection(2).Values = _
"='[base datos.xlsm]" & nombre & "'!$C$5:$E$5"
Next hoja



End Sub
[/CODE]

Ejemplos.zip

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.