none
Desarrollo con Excel (gráficos 2D) RRS feed

  • Pregunta

  • Buenos días,

    estoy tratando de elaborar un programa que dibuje una simple gráfica (X,Y) en función de los datos de una tabla de otra hoja de cálculo (del mismo fichero).

    Los datos están en dos columnas distintas, y quiero que una de ellas represente el eje X de la gráfica, la otra columna representaría el eje Y. Es decir, en A1:A30 tengo los puntos del eje X, en B1:B30 los del eje Y, y quiero que en mi gráfica, en el punto A1 del eje X se represente el valor B1 en Y, de forma que los puntos de la gráfica serían (Ai,Bi).

    Hasta ahora, he conseguido representar la curva con los datos de la columna B, y la forma de la curva es correcta, pero las coordenadas X de los puntos de la gráfica no se corresponden con los datos la columna A de mi tabla.

    Por si ayuda a comprender mi duda, la sección de código que recoge los datos de la hoja de cálculo y representa la gráfica es: 

    	Dim xlWorkChart As Excel.Chart
    
    	Dim EjeX, EjeY As Excel.Range
    
            Dim xlsAxisCategory, xlsAxisValue As Excel.Axes
    
    	xlWorkSheet = xlWorkBook.Worksheets("Datos")
    
            EjeX = xlWorkSheet.Range("A1:A30")
            EjeY = xlWorkSheet.Range("B1:B30")
    
            xlWorkSheet = xlWorkBook.Worksheets(3)
            xlWorkSheet.Name = "TEST"
            xlApp.ScreenUpdating = False
    
            ' Gráfica antes de la hoja 2
            xlWorkChart = xlWorkBook.Charts.Add(xlWorkBook.Worksheets(2))
    
            xlWorkChart.SetSourceData(EjeY)
    
    	' Formato de la gráfica, tipo y título
            xlWorkChart.ChartType = XlChartType.xlXYScatterLines ' xlLine
            xlWorkChart.HasTitle = True
            xlWorkChart.ChartTitle.Text = "Respuesta en frecuencia"
    
            ' Formato del eje X
            xlsAxisCategory = xlWorkChart.Axes(, Excel.XlAxisGroup.xlPrimary)
            xlsAxisCategory.Item(Excel.XlAxisType.xlCategory).HasTitle = True
            xlsAxisCategory.Item(Excel.XlAxisType.xlCategory).AxisTitle.Characters.Text() = "Frecuencia"
    
            ' Formato del eje Y
            xlsAxisValue = xlWorkChart.Axes(, Excel.XlAxisGroup.xlPrimary)
            xlsAxisValue.Item(Excel.XlAxisType.xlValue).HasTitle = True
            xlsAxisValue.Item(Excel.XlAxisType.xlValue).AxisTitle.Characters.Text() = "dB"

    ¿Alguien sabría indicarme cómo hacer corresponder los puntos Y con sus respectivos X? He tratado con distintos métodos que me sugiere el entorno de desarrollo y algunos de los que he encontrado indagando por el buscador, pero no he dado con una solución funcional.

    Estoy trabajando con Visual Basic 2010 Express, usando referencia a la librería "Microsoft Excel 11.0 Object Library".

    Disculpad si este hilo no va en esta sección, me ha parecido la más adecuada y soy nuevo por aquí.

    Muchas gracias de antemano.

    Saludos.


    • Editado jmglez lunes, 24 de febrero de 2014 9:04
    lunes, 24 de febrero de 2014 8:50