Я думаю, что это попадает в мир VBA. В противном случае работа с отдельными метками данных довольно ограничена.
Вот код, который будет перебирать серии в диаграмме, их точки данных, а затем удалять те метки, которые соответствуют точке со Value=0
.
Там есть строка кода (прокомментированная), которая снова добавит метки данных ко всем точкам для их сброса. Если вы просто хотите удалить, то можете пропустить эту строку.
Редактировать: добавлено во внешний цикл на ActiveSheet.ChartObjects
для обработки всех диаграмм на листе.
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
Этот ответ захватывает Values
из Series
используя технику, описанную здесь.
Вот результат для некоторых случайных данных, где для пары столбцов значений 0 были удалены метки данных.