Gráfico Excel - contando as séries e adicionando um rótulo de dados ao último ponto

Gráfico Excel - contando as séries e adicionando um rótulo de dados ao último ponto

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...).

insira a descrição da imagem aqui

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

informação relacionada