Gráficos múltiples

26/10/2003 - 15:44 por Manuel Nilo | Informe spam
Saludos a todos:

quiero presentar en una hoja de cálculo dos gráficos de líneas
- uno irá debajo de otro
- ambos tienen el mismo número de datos a representar
- ambos gráficos tienen distintas escalas en el eje vertical (puesto que
representan diferentes variables).

lo que quiero es ver como hago para que cada punto del gráfico superior esté
exactamente encima de cada punto del gráfico inferior sin tener que andar
ajustándolos a mano.

¿alguna sugerencia?

Gracias por adelantado

______________________________

Manuel Nilo
mnihilium@hotmail.com
______________________________
 

Leer las respuestas

#1 Fernando Arroyo
27/10/2003 - 15:56 | Informe spam
El problema para hacer lo que necesitas por código es que los títulos de los ejes no son una colección o un objeto independendiente del objeto ChartArea, sino que, hasta donde yo sé, forman parte inseparable de él. La única forma que he encontrado para conseguirlo no es demasiado elegante, me temo, ni en su ejecución ni en sus resultados : consiste en formatear los títulos de los ejes del gráfico con valores más pequeños de forma que ocupen lo mismo que los del más grande. El código es:

Sub prueba()

Dim lngMax As Double

With ActiveSheet

lngMax = Application.WorksheetFunction.Max(.ChartObjects(1).Chart.SeriesCollection(1).Values, .ChartObjects(2).Chart.SeriesCollection(1).Values)

'Alinear exactamente a la izquierda ambos gráficos
ActiveSheet.ChartObjects(2).Left = ActiveSheet.ChartObjects(1).Left
'Poner el gráfico 2 justo debajo de 1
ActiveSheet.ChartObjects(2).Top = ActiveSheet.ChartObjects(1).Top + ActiveSheet.ChartObjects(1).Height
'Igualar las áreas de trazado de ambos gráficos
If .ChartObjects(1).Chart.PlotArea.Width > .ChartObjects(2).Chart.PlotArea.Width Then .ChartObjects(2).Chart.PlotArea.Width = .ChartObjects(1).Chart.PlotArea.Width Else .ChartObjects(2).Chart.PlotArea.Width = .ChartObjects(1).Chart.PlotArea.Width

'Igualar el tamaño de los rótulos de marcas de graduación de ambos gráficos a la más ancha
If Application.WorksheetFunction.Max(.ChartObjects(1).Chart.SeriesCollection(1).Values) > Application.WorksheetFunction.Max(.ChartObjects(2).Chart.SeriesCollection(1).Values) Then
.ChartObjects(2).Chart.Axes(Type:=xlValue).TickLabels.NumberFormat = String(Len(Trim(lngMax)), "0")
.ChartObjects(1).Chart.Axes(Type:=xlValue).TickLabels.NumberFormat = "General"
Else
.ChartObjects(1).Chart.Axes(Type:=xlValue).TickLabels.NumberFormat = String(Len(Trim(lngMax)), "0")
.ChartObjects(2).Chart.Axes(Type:=xlValue).TickLabels.NumberFormat = "General"
End If
End With

End Sub


He preparado un pequeño ejemplo donde se ve bien qué es lo que hace el código:

http://www.excelsp.com/ejemplos/eje...aficos.xls

Tal como está el código, sólo funcionará con números enteros positivos.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Manuel Nilo" escribió en el mensaje news:%23g4fm%
Saludos a todos:

quiero presentar en una hoja de cálculo dos gráficos de líneas
- uno irá debajo de otro
- ambos tienen el mismo número de datos a representar
- ambos gráficos tienen distintas escalas en el eje vertical (puesto que
representan diferentes variables).

lo que quiero es ver como hago para que cada punto del gráfico superior esté
exactamente encima de cada punto del gráfico inferior sin tener que andar
ajustándolos a mano.

¿alguna sugerencia?

Gracias por adelantado

______________________________

Manuel Nilo

______________________________


Preguntas similares