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

2

Consegui criar uma macro que encontra o último ponto da primeira série em um gráfico e adicionar e formatar um rótulo de dados. Agora gostaria de contar a série, que pode mudar em número, no gráfico e fazer uma iteração em cada um, fazendo o que fez com a série 1.

Ele falha miseravelmente. Comentei as partes que tentei, mas falhei.

Não tenho certeza de como envolvo o que fiz.

Qualquer ajuda 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.

    
por RocketGoal 31.08.2016 / 16:12

2 respostas

1

Não há necessidade de VBA (a menos que você goste do 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 de ajuda ao seu gráfico e rotule / formate a gosto. O gráfico ignora todos os N / As e traça apenas o ponto final dos dados. Isso também pode ser usado para encontrar outros valores-chave (por exemplo, primeiro, alto, baixo, etc ...).

    
por 31.08.2016 / 17:14
0

Fazer um loop em 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
    
por 31.08.2016 / 17:47