Ocultar rótulo de dados contendo o nome da série se o valor for zero

5

Eu fiz um gráfico no Excel em que gostaria de ocultar o rótulo de dados se o valor for zero. Para rótulos de dados que contêm o valor em si, isso é feito usando a formatação personalizada, conforme explicado aqui Como ocultar rótulos de dados de valor 0 em um gráfico do Excel? .

No entanto, isso não funciona se o rótulo de dados não contiver o valor em si, mas o nome da série. Existe uma maneira de ocultar o rótulo de dados contendo o nome da série se o valor for zero?

    
por WhoKnows19 27.05.2015 / 13:31

3 respostas

2

Eu acho que isso cai no mundo do VBA. Trabalhar em etiquetas de dados individuais é bastante limitado de outra forma.

Aqui está o código que irá percorrer a série em um gráfico, seus pontos de dados e, em seguida, excluir os rótulos que correspondem a um ponto com Value=0 .

Há uma linha de código lá (comentada) que adicionará os rótulos de dados novamente a todos os pontos para redefini-los. Se você quer apenas apagar, então você pode pular esta linha.

Editar: adicionado em um loop externo em ActiveSheet.ChartObjects para processar todos os gráficos em uma planilha.

Sub RemoveZeroValueDataLabel()

    'runs through every chart on the ActiveSheet
    Dim cht As Chart
    Dim chtObj As ChartObject

    For Each chtObj In ActiveSheet.ChartObjects
        Set cht = chtObj.Chart

        Dim ser As Series
        For Each ser In cht.SeriesCollection

            Dim vals As Variant
            vals = ser.Values

            'include this line if you want to reestablish labels before deleting
            ser.ApplyDataLabels xlDataLabelsShowLabel, , , , True, False, False, False, False

            'loop through values and delete 0-value labels
            Dim i As Integer
            For i = LBound(vals) To UBound(vals)
                If vals(i) = 0 Then
                    With ser.Points(i)
                        If .HasDataLabel Then
                            .DataLabel.Delete
                        End If
                    End With
                End If
            Next i
        Next ser
    Next chtObj
End Sub

Essa resposta pega Values do Series usando a técnica detalhado aqui .

Aqui está o resultado em alguns dados aleatórios em que algumas barras de valor 0 tiveram seus rótulos de dados excluídos.

    
por 27.05.2015 / 16:57
0

Você pode excluir todos os seus 0s (Localizar e substituir para substituir todos os seus 0s por um conteúdo de célula inteira inteira em branco, ="" não funciona).

    
por 27.05.2015 / 23:22
0

Veja este truque inteligente (sem necessidade de VBA, mas totalmente automático!): link

    
por 28.04.2017 / 18:56