Adicionando rótulo de dados apenas ao último valor

1

Então eu tenho um gráfico de linhas com várias linhas. Curtiu isso.

Eugostariadeadicionarumrótulodedadosacadalinha,masapenasaoúltimovaloràdireita.

Euseisepossoexcluirmarcadoresindividuais.Masquandoeuadicionoumnovovaloràminhatabela,onovovaloraparecerácomumnovorótulo,oqueébom,masoanterioreuteriaqueexcluirmanualmente.Existeumamaneiradefazerorótulosemoverautomaticamenteparaadireita?

    
por Alexey Adamsky 13.01.2018 / 14:21

3 respostas

1

Na minha outra resposta, não fiz nenhuma permissão para um último ponto em movimento (por exemplo, pontos de dados adicionados). Não é grande coisa ajustar seus dados para permitir uma única etiqueta em movimento.

Estou exibindo apenas uma série de dados, mas é fácil fazer quantas forem necessárias, depois que você souber o truque. Nos dados definidos abaixo, tenho uma coluna Data e duas colunas com o mesmo cabeçalho, Valor. A primeira coluna de valores tem valores até o meio do período. A segunda coluna tem uma fórmula que exibe apenas o último valor. Esta é a fórmula na célula C2:

=IF(AND(ISNUMBER(B2),LEN(B3)=0),B2,NA())

Esta fórmula é copiada na coluna.

Agora, faça um gráfico de todos os dados. A primeira série de valores é os círculos e linhas azuis, a segunda é apenas o círculo laranja no último ponto azul. Eu adicionei um rótulo para a série laranja, não o azul.

O segundo gráfico mostra que foi limpo: formatei a segunda série Value para não usar marcadores e linhas, e excluí a legenda.

Nopróximográfico,tudooquefizfoiadicionaralgunspontosdedados.Semqualqueresforçoadicionaldaminhaparte,orótulopassouparaonovopontofinal.

    
por 15.01.2018 / 04:42
0

Eu gostaria de sugerir as duas opções. O primeiro é não-VBA e o outro é código VBA.

Solução não VBA:

Como o Excel não tem nenhum arranjo para atribuir apenas um rótulo de dados, se uma série de células estiver envolvida para criar o gráfico.

Mas depois que o gráfico foi criado, você pode redefinir os rótulos.

No seu caso, após o rótulo ser aplicado, clique com o botão direito na linha e você verá que os rótulos estão prontos para edição. Selecione Rótulos um por um e clique com o botão direito & Exclua ou desmarque a caixa de seleção Value ao lado da área do gráfico.

Solução VBA:

Crie um botão de comando e insira este código.

Lembre-se, você simplesmente cria o gráfico, mas não aplica os rótulos de dados. Depois que tudo estiver pronto, clique no botão de comando. O código criará primeiro todos os rótulos de dados para manter o ÚLTIMO ÚLTIMO.

Note que você pode rum este código como RUN MACRO mesmo sem o botão de comando.

Sub LastDataLabel()

Dim ws As Worksheet
Dim chrt as Chart
Dim srs as Series
Dim pnt as Point
Dim p as Integer

Set ws = ActiveSheet
Set chrt = ws.ChartObjects("Line Chart")
Set srs = chrt.SeriesCollection(1)

    srs.ApplyDataLabels

    For p = 1 to srs.Points.Count - 1 
        Set pnt = srs.Points(p)

        p.Datalabel.Text = ""
    Next

    srs.Points(srs.Points.Count).DataLabel.Format.TextFrame2.TextRange.Font.Size = 10


End Sub

Espero que isso ajude você .

    
por 14.01.2018 / 12:06
0

Se você selecionar toda a série, o Excel colocará um rótulo em cada ponto da série.

Selecione apenas o único ponto em que deseja colocar um rótulo: clique uma vez para selecionar a série e clique novamente para selecionar um ponto. Agora, quando você usa o menu do botão direito ou o ícone de sinal de adição para adicionar rótulos de dados, ele adiciona um marcador apenas no ponto selecionado.

Para uma abordagem VBA que apenas adiciona um rótulo ao último ponto e não deixa um monte de "" rótulos no gráfico, aqui está um procedimento simples do meu tutorial Última Referência do Label para o Excel 2007 . Ele rotula especificamente o último ponto de cada série no gráfico ativo com o nome da série.

Sub LastPointLabel()
  Dim mySrs As Series
  Dim iPts As Long
  Dim vYVals As Variant
  Dim vXVals As Variant

  If ActiveChart Is Nothing Then
    MsgBox "Select a chart and try again.", vbExclamation
  Else
    Application.ScreenUpdating = False
    For Each mySrs In ActiveChart.SeriesCollection
      With mySrs
        vYVals = .Values
        vXVals = .XValues
        ' clear existing labels
        .HasDataLabels = False
        For iPts = .Points.Count To 1 Step -1
          If Not IsEmpty(vYVals(iPts)) And Not IsError(vYVals(iPts)) _
              And Not IsEmpty(vXVals(iPts)) And Not IsError(vXVals(iPts)) Then
            ' add label
            mySrs.Points(iPts).ApplyDataLabels _
                ShowSeriesName:=True, _
                ShowCategoryName:=False, ShowValue:=False, _
                AutoText:=True, LegendKey:=False
            Exit For
          End If
        Next
      End With
    Next
    ' legend is now unnecessary
    ActiveChart.HasLegend = False
    Application.ScreenUpdating = True
  End If
End Sub

Eu escrevi um monte de artigos sobre isso:

Além disso, meu software comercial de gráficos do Excel inclui uma versão atualizada desse recurso.

    
por 15.01.2018 / 04:24