Macro para leer datos para crear gráfico excel vba

Cordial a los expertos del foro por su apoyo, necesito leer datos para crear gráfico en automático por ahora lo hago manualmente, como muestro 3 imágenes como va el proceso de lectura y obtener el resultado, según mi hoja se creará 8 gráficos en una sola del 0,1 al 0,8 pero esto varía aveces puede ser del 0,1 al 0,5, ¿cómo puedo conseguir con macro?

imagen 2

imagen 3

1 Respuesta

Respuesta
2

La siguiente macro lo que hace es recorrer la fila 3 y según los valores que encuentre serán las series a agregar en el gráfico.

De última le dejé algunas opciones ya programadas (como la ubicación de la leyenda), pero todos esos detalles los tendrás que realizar manualmente. Si necesitás automatizar también ese proceso de formateo, encendé antes la grabadora de macros así podrás obtener las instrucciones.

Sub graficandoSeries()
'x Elsamatilde
Range("J11").Select
    ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmooth).Select
    Application.CutCopyMode = False
    'se establece cuál será la ultima serie
    x = 1
    If Range("B3") <> "" Then x = Range("A3").End(xlToRight).Column
    'se establece la última fila de datos según col A
    y = Range("A" & Rows.Count).End(xlUp).Row
    'se agregan las series al gráfico
    For i = 2 To x
        'se arman los rangos para asignarlos a cada serir
        If Cells(4, i) <> "" Then
            ini = 4
        Else
            ini = Cells(3, i).End(xlDown).Row
        End If
        rgoy = Range(Cells(ini, i), Cells(y, i)).Address    ' $B$4:$B$20
        rgox = Range(Cells(ini, 1), Cells(y, 1)).Address    ' $A$4:$A$20
        'se crea la serie
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.FullSeriesCollection(i - 1).Name = "=Blad1!" & Cells(3, i).Address
        ActiveChart.FullSeriesCollection(i - 1).XValues = "=Blad1!" & rgoy  '$B$4:$B$20
        ActiveChart.FullSeriesCollection(i - 1).Values = "=Blad1!" & rgox   '$A$4:$A$20
        'las sgtes series se establecen en eje secundario 
        If i > 2 Then ActiveChart.FullSeriesCollection(i - 1).AxisGroup = 2
    Next i
        'ubicación de leyeda y configuración de ejes
        ActiveChart.SetElement (msoElementLegendBottom)
        ActiveChart.SetElement (msoElementSecondaryValueAxisNone)
    Range("J7").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas