如果值为零,则隐藏包含系列名称的数据标签

Who*_*s19 6 microsoft-excel microsoft-excel-2010

我在excel中制作了一个图表,如果值为零,我想在其中隐藏数据标签。对于包含值本身的数据标签,这是通过使用自定义格式完成的,如此处所述如何在 Excel 图表中隐藏 0 值数据标签?.

但是,如果数据标签不包含值本身而是系列名称,则这不起作用。如果值为零,有没有办法隐藏包含系列名称的数据标签?

Byr*_*all 4

我认为这属于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
Run Code Online (Sandbox Code Playgroud)

这个答案Values来自使用此处详细介绍的Series技术。

这是一些随机数据的结果,其中几个 0 值条已删除其数据标签。

已删除标签的图表