我正在创建一个包含以下代码的气泡图。它使用所有预期数据正确创建图表...除了在某些情况下,标签没有显示。我已经对值进行了排序和添加,并检查了数据范围等,但似乎没有任何原因导致有些标签显示而有些标签不显示。
我有一些屏幕截图,其中一张显示在范围内选择了值,但没有显示,并且该数据点在范围内。很难获得所有屏幕截图,但第三个屏幕截图显示 Co4 缺失,即使这些值已在数据标签属性中指向。
有解决此类问题的经验吗?
.DataLabels.Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange, "='活动图表'!$P$18:$P$" & rgMap.Offset(-1, 0).Row, 0
终于在我的电脑前呆了几分钟了。
这是一段非常旧的代码,我已针对 Excel 2013+ 进行了调整。
将数据按此顺序放入四列:名称、X、Y 和 Z(气泡大小)。
以下代码使用此数据创建气泡图,忽略任何非数据行(标题行或 X、Y 或 Z 为空白的行)。它为每一行创建一个单独的系列,使用第一列作为单点系列的名称,然后应用包含系列名称和气泡大小的标签。
Sub OneRowPerBubbleSeries()
'' Takes 4-column range and constructs Bubble chart
'' Uses one series per row: Columns in order: Name, X, Y, Z
Dim wks As Worksheet
Dim cht As Chart
Dim srs As Series
Dim rng As Range
Dim rng1 As Range
Dim rownum As Integer
Dim bFirstRow As Boolean
Set wks = ActiveSheet
Set rng = Selection
Set cht = wks.Shapes.AddChart2(269, xlBubble3DEffect).Chart
bFirstRow = True
For rownum = 2 To rng.Rows.Count
Set rng1 = rng.Cells(rownum, 2).Resize(1, 3)
If IsNumeric(rng1.Cells(1, 1).Value) And _
IsNumeric(rng1.Cells(1, 2).Value) And _
IsNumeric(rng1.Cells(1, 3).Value) Then
'' First time: need to do it differently
If bFirstRow Then
cht.SetSourceData Source:=rng1, PlotBy:=xlColumns
bFirstRow = False
Else
Set srs = cht.SeriesCollection.NewSeries
End If
With cht.SeriesCollection(cht.SeriesCollection.Count)
.Values = rng1.Cells(1, 2)
.XValues = rng1.Cells(1, 1)
.BubbleSizes = "=" & rng1.Cells(1, 3).Address _
(ReferenceStyle:=xlR1C1, External:=True)
.Name = rng.Cells(rownum, 1)
.HasDataLabels = True
With .DataLabels
.Position = xlLabelPositionRight
.ShowSeriesName = True
.ShowValue = False
.ShowBubbleSize = True
.NumberFormat = "$#,##0"
End With
End With
End If
Next
End Sub
我不确定对于某些 Excel 用户来说这是否仍然是一个问题,但我找到了一个快速解决方法。我只是取消选中并选中“数据标签选项”下的“从单元格中选择值”选项(请参阅下面的屏幕截图以供参考),这解决了问题。但如果我在表中创建一个新条目以在时间轴中添加新事件,它就会重新出现,然后我必须再次打开“数据标签”选项并重复该过程。它有效,但如果您要制作季度或年度事件报告,则会很忙。我认为这是一个需要 MS 团队修复的错误。 示例屏幕截图 - 数据标签选项