我只是想知道是否有一种方法可以在 VBA 的图表对象中自定义 DataTable 的内容?即有没有办法改变表格的内容而不是实际的图表数据?见下图,其中Pos和EU(最左边的图片)已更改为OtherData1和OtherData2(最右边的图片),显然表格中也有新数据。需要进入表的数据在范围对象中找到。
谢谢,
这是我经常使用的一个巧妙的技巧。它不会为您提供带边框的表格,您必须为系列名称添加文本框,但它允许您自定义图表下方“表格”中显示的内容。
首先,创建图表并为所有数据添加系列:
添加数据标签,然后格式化“其他数据”系列,以便没有线条、标记/等:
然后,您可以使用这样的宏来调整数据标签相对于图表/绘图区域的位置。对于这个宏,我只是检查该系列的行格式.Visible = msoFalse
,但您可以扩展该逻辑以满足您可能有的任何其他要求。
Sub Test()
Dim cht As Chart
Dim srs As Series
Dim p As Long
Dim dl As DataLabel
Dim dlTop As Double
Dim s As Long
Application.ScreenUpdating = False
Set cht = ActiveSheet.ChartObjects(1).Chart
For Each srs In cht.SeriesCollection
If srs.Format.Line.Visible = msoFalse Then
s = s + 1
srs.DataLabels.Position = xlLabelPositionCenter
For p = 1 To srs.Points.Count
Set dl = srs.DataLabels(p)
dlTop = cht.PlotArea.Height + cht.PlotArea.Top + (s * dl.Height)
dl.Select
dl.Top = dlTop
Next
End If
Next
Application.ScreenUpdating = True
End Sub
结果应该是这样的:
不幸的是,我无法摆脱数据表中引用所见数据的行,但我可以在数据表中添加更多行(仅限数字)
例子:
为此,我将所有线条添加到图表的数据中,包括我只想在数据表中显示的数据。
然后,我为那些我不想显示为标记填充的数据行格式化:无填充和线条颜色:无线条。这将使线条消失。
然后我调整了比例,使它看起来好像只绘制了一条数据线。