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

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

我在 excel 中制作了一个图表,如果值为零,我想隐藏数据标签。对于包含值本身的数据标签,可以使用自定义格式来完成,如下所述如何在 Excel 图表中隐藏 0 值数据标签?

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

答案1

我认为这属于 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 值条的数据标签已被删除。

删除了标签的图表

答案2

您可以将自定义格式代码应用于标签,该代码与用于格式化数字单元格(日期、百分比、货币等)的代码相同。自定义格式代码具有以下语法:

<positive>[;<negative>[;<zero>[;<nan>]]]

您需要复制现有的格式代码两次(以 分隔;),然后;在后面添加一个额外的代码,如果值为零,则表示为空字符串。例如,如果您的标签格式为百分比,您将看到代码

0%

对于货币格式,代码为

$#,##0

零值为空字符串的对应代码为

0%;0%;
$#,##0;$#,##0;

分别。

附注:自定义格式代码通常用于将不同的颜色应用于正数/负数,如下所述这里

答案3

您可以删除所有 0(查找并替换以将所有 0 替换为与整个单元格内容匹配的真正空白,但=""不起作用)。

在此处输入图片描述

相关内容