我在 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 替换为与整个单元格内容匹配的真正空白,但=""
不起作用)。