excel - 从图表 Excel 中仅删除 0 个值
问题描述
我一直在尝试从 Excel 图表中删除这些 0,我已经观看了多个使用的视频Format Control #,##0;-#,##0;;.
以及 Google 上可用的不同内容,但没有发生任何事情。我已将 0 值替换为Nothing#
.
转到高级取消选中Show a zero in cells that have zero values
然后转到选择数据源=>隐藏和空单元格,但仍然没有任何反应。
问题仍未解决,有人可以帮我解决这个问题,我将非常感谢您的帮助。
如果可以通过 VBA 解决,请分享代码或手动解决方案。
我试图写记录代码,但我真的不知道该怎么做。
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveSheet.ChartObjects("Chart 16").Activate
ActiveChart.FullSeriesCollection(3).Select
ActiveChart.SetElement (msoElementDataLabelCenter)
ActiveChart.FullSeriesCollection(3).DataLabels.Select
ActiveChart.FullSeriesCollection(3).Points(1).DataLabel.Select
Selection.Delete
ActiveSheet.ChartObjects("Chart 16").Activate
ActiveChart.FullSeriesCollection(3).DataLabels.Select
ActiveChart.FullSeriesCollection(3).Points(9).DataLabel.Select
Selection.Delete
ActiveSheet.ChartObjects("Chart 16").Activate
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.SetElement (msoElementDataLabelCenter)
ActiveChart.FullSeriesCollection(1).DataLabels.Select
ActiveChart.FullSeriesCollection(1).Points(9).DataLabel.Select
Selection.Delete
ActiveSheet.ChartObjects("Chart 16").Activate
ActiveChart.FullSeriesCollection(2).Select
ActiveChart.SetElement (msoElementDataLabelCenter)
ActiveChart.FullSeriesCollection(2).DataLabels.Select
ActiveChart.PlotArea.Select
ActiveChart.FullSeriesCollection(2).DataLabels.Select
ActiveChart.FullSeriesCollection(2).Points(9).DataLabel.Select
Selection.Delete
ActiveSheet.ChartObjects("Chart 16").Activate
ActiveChart.FullSeriesCollection(2).DataLabels.Select
ActiveChart.FullSeriesCollection(2).Points(8).DataLabel.Select
Selection.Delete
ActiveSheet.ChartObjects("Chart 16").Activate
ActiveChart.FullSeriesCollection(2).DataLabels.Select
ActiveChart.FullSeriesCollection(2).Points(6).DataLabel.Select
Selection.Delete
ActiveSheet.ChartObjects("Chart 16").Activate
ActiveChart.FullSeriesCollection(2).DataLabels.Select
ActiveChart.FullSeriesCollection(2).Points(5).DataLabel.Select
Selection.Delete
ActiveSheet.ChartObjects("Chart 16").Activate
ActiveChart.FullSeriesCollection(3).DataLabels.Select
ActiveChart.ChartArea.Select
End Sub
我已经尝试过这个,但它删除了所有标签而不是 0。
Sub chartth()
Sheet5.ChartObjects("Chart 16").Activate
With ActiveChart.SeriesCollection(1)
For i = 1 To .Points.Count
If .Points(i).HasDataLabel = False Then
.Points(i).Select
ActiveChart.SetElement (msoElementDataLabelShow)
If .Points(i).DataLabel.Text = 0 Then
.Points(i).HasDataLabel = False
.Points(i).DataLabel.ShowValue = False
End If
ElseIf .Points(i).DataLabel.Text = 0 Then
.Points(i).HasDataLabel = False
.Points(i).DataLabel.ShowValue = False
End If
Next i
End With
With ActiveChart.SeriesCollection(2)
For i = 1 To .Points.Count
If .Points(i).HasDataLabel = False Then
.Points(i).Select
ActiveChart.SetElement (msoElementDataLabelShow)
If .Points(i).DataLabel.Text = 0 Then
.Points(i).HasDataLabel = False
.Points(i).DataLabel.ShowValue = False
End If
ElseIf .Points(i).DataLabel.Text = 0 Then
.Points(i).HasDataLabel = False
.Points(i).DataLabel.ShowValue = False
End If
Next i
End With
With ActiveChart.SeriesCollection(3)
For i = 1 To .Points.Count
If .Points(i).HasDataLabel = False Then
.Points(i).Select
ActiveChart.SetElement (msoElementDataLabelShow)
If .Points(i).DataLabel.Text = 0 Then
.Points(i).HasDataLabel = False
.Points(i).DataLabel.ShowValue = False
End If
ElseIf .Points(i).DataLabel.Text = 0 Then
.Points(i).HasDataLabel = False
.Points(i).DataLabel.ShowValue = False
End If
Next i
End With
解决方案
也许尝试以下类似的方法,将数据标签应用于 each Series
,然后循环遍历Point
each 中的 sSeries
并删除DataLabel
if 它为 0。
Sub ApplyLabelsAndClearZeros(ByVal chrt As Chart)
Dim ser As Series
For Each ser In chrt.SeriesCollection
ser.ApplyDataLabels
Dim pnt As Point
For Each pnt In ser.Points
If pnt.DataLabel.Text = "0" Then
pnt.HasDataLabel = False
End If
Next
Next
End Sub
像下面这样调用它:
Sub Test()
ApplyLabelsAndClearZeros Sheet1.ChartObjects(1).Chart
End Sub
推荐阅读
- java - 如何使用apache poi更新java中现有的excel文件
- python - Python自定义模块导入问题
- javascript - 比较两个数组并在新数组中过滤掉重复项
- reactjs - 为什么 setState(contains another setState inside) 被调用两次?
- python - 使用节点值而不是项号遍历非二叉树
- python - Python Pandas read_csv() 不必要地获取与我的笔记本电脑相关的信息
- node.js - gRPC 错误:带有 NestJS 的 Docker 上的“地址不可用”
- javascript - 在Javascript中是否有更短的方法来做到这一点?(更多下文)
- kotlin - 如果不为空,则分配值的惯用方式
- javascript - 为什么我不能让这个简单的 CSS 过渡工作?