La pregunta es ¿Cómo puedo incluir en un gráfico series de datos con valores de “x” específico para determinadas series de datos?
El punto de partida es una hoja de cálculo con dos columnas (x,y). A partir de estas dos columnas se calculan otras dos con unos nuevos valores de (x,y).
Necesito representar en una gráfica las dos series de datos cada una con sus valores de x e y.
Utilizo como libro de cabecera el manual de Mauricio Baeza. Siguiendo el ejemplo de la página 353 lo he modificado obteniendo el siguiente código que funciona correctamente:
Código: Seleccionar todo
Sub MainGrf01
Dim oGraficos As Object
Dim oGrafico As Object
Dim mRangos(0)
Dim sNombre As String
Dim oRec As New com.sun.star.awt.Rectangle
Dim oDir As New com.sun.star.table.CellRangeAddress
opDoc = ThisComponent
'Referencia a TODAS las hojas del documento
opHojas = opDoc.getSheets() ' El objeto opHojas contiene todas las hojas de cálculo
'El nombre de nuestro gráfico
sNombre = "Grafico01"
'msgbox opHojas(0).Name
With oRec
.X = 0 'Distancia desde la izquierda de la hoja
.Y = 0 'Distancia desde la parte superior
.Width = 27000 'El ancho del gráfico
.Height = 21000 'El alto del gráfico
End With
'La dirección del rango de datos para el gráfico
With oDir
.Sheet = opHojas(0).getRangeAddress.Sheet
.StartColumn = 0
.EndColumn = 2
.StartRow = 3
.EndRow = 1000
End With
'Es una matriz de rangos, pues se pueden establecer más de uno
mRangos(0) = oDir
'Accedemos al conjunto de todos los gráficos de la hoja
oGraficos = opHojas(10).getCharts()
'Verificamos que no exista el nombre
If oGraficos.hasByName( sNombre ) Then
MsgBox "Ya existe este nombre de gráfico, escoge otro"
Else
'Si no existe lo agregamos
oGraficos.addNewByName(sNombre, oRec, mRangos, True, True)
'Accedemos al nuevo gráfico
oGrafico = oGraficos.getBYName( sNombre ).getEmbeddedObject()
oGrafico.setDiagram( oGrafico.createInstance("com.sun.star.chart.XYDiagram"))
End If
End Sub
Código: Seleccionar todo
Dim mRangos(1)
…
With oDir
.Sheet = opHojas(0).getRangeAddress.Sheet
.StartColumn = 0
.EndColumn = 2
.StartRow = 3
.EndRow = 1000
End With
mRangos(0) = oDir
…
With oDir
.Sheet = opHojas(0).getRangeAddress.Sheet
.StartColumn = 3
.EndColumn = 4
.StartRow = 3
.EndRow = 1000
End With
'Es una matriz de rangos, pues se pueden establecer más de uno
mRangos(1) = oDir
Lo que pretendía, y no he conseguido, es considerar una series con las columnas 0 y 1 como valores de x e y, y otra serie con las columnas 2 y 3 como valores de x e y respectivamente.
Muchas gracias por vuestra ayuda