Logré crear una macro que encuentra el último punto de la primera serie en un gráfico y agrega y formatea una etiqueta de datos. Ahora me gustaría hacer que cuente la serie, que puede cambiar en número, en el gráfico e iterar a través de cada una haciendo lo que hizo con la serie 1.
Fracasa estrepitosamente. He comentado las partes que probé pero fallé.
No estoy seguro de cómo puedo entender lo que he hecho.
Cualquier ayuda se agradece.
Miguel.
Dim MyChart As Chart
Dim ChartPoints As Points
Dim ChartDataLables As DataLabel
'Dim NumberOfSeries As Series
Set MyChart = ActiveSheet.ChartObjects("Chart 1").Chart
'Set NumberOfSeries = MyChart.SeriesCollection.Count
Set ChartPoints = MyChart.SeriesCollection(1).Points
ChartPoints(ChartPoints.Count).ApplyDataLabels
Set ChartDataLables = ChartPoints(ChartPoints.Count).DataLabel
'For Each NumberOfSeries In MyChart
With MyChart
With ChartDataLables
.Position = xlLabelPositionRight
.HorizontalAlignment = xlCenter
.Font.Size = 8
.NumberFormat = "0.00"
.ShowSeriesName = True
.Font.Name = "Arial Narrow"
End With
End With
'Next NumberOfSeries
End Sub
Mi macro original fue escrita con la ayuda de Google/Foros y prueba y error.
Respuesta1
No es necesario VBA (a menos que te guste VBA). Simplemente cree una serie auxiliar que evalúe si hay otro valor (yo uso una fórmula de compensación). Si no hay ningún valor "siguiente" en su serie de datos, devuelva el valor actual/último. De lo contrario, devuelva un #N/A. Luego agregue esta serie de ayuda a su gráfico y etiquétela o déle formato a su gusto. El gráfico ignora todos los N/A y solo traza el punto de datos final. Esto también se puede utilizar para encontrar otros valores clave (por ejemplo, primero, alto, bajo, etc...).
Respuesta2
Recorra cada serie del gráfico:
Option Explicit
Public Sub LoopThroughSeries()
Dim myChart As ChartObject
Dim mySeries As Series
With myChart
For Each mySeries In myChart.Chart.SeriesCollection
'do stuff
Next
End With
End Sub