Consegui fazer uma macro que encontra o último ponto da primeira série em um gráfico e adiciona e formata um rótulo de dados. Gostaria agora de fazer com que contasse as séries, que podem mudar de número, no gráfico e iterar cada uma delas, fazendo o que fez com a série 1.
Falha miseravelmente. Comentei as partes que tentei, mas falhei.
Não tenho certeza de como envolvo o que fiz.
Qualquer ajuda será apreciada com gratidão.
Michael.
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
Minha macro original foi escrita com a ajuda do Google/Fóruns e tentativa e erro.
Responder1
Não há necessidade de VBA (a menos que você goste de VBA). Basta criar uma série auxiliar que avalie se há outro valor (eu uso uma fórmula de deslocamento). Se não houver nenhum valor "próximo" em sua série de dados, retorne o valor atual/último. Caso contrário, retorne um #N/A. Em seguida, adicione esta série auxiliar ao seu gráfico e rotule/formate a seu gosto. O gráfico ignora todos os N/A e representa apenas o ponto de dados final. Isso também pode ser usado para encontrar outros valores-chave (por exemplo, primeiro, alto, baixo, etc...).
Responder2
Percorra cada série no 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