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.