我只是想知道是否有办法在VBA中的Chart-object中自定义DataTable的内容?即有没有办法改变表的内容不是实际的图表数据?请参见下图,其中 Pos 和 EU (最左侧的图片)已更改为 OtherData1 和 OtherData2 (最右边的图片,显然也有表中的新数据。需要进入表格的数据可在范围对象中找到。
谢谢,
答案 0 :(得分:2)
不幸的是,我无法摆脱数据表中引用数据的行,但我可以在数据表中添加更多行(仅限数字)
例:
为此,我将所有行添加到图表的数据中,包括我想仅在数据表中显示的数据。
然后,我为那些我不想显示的数据行格式化为 Marker Fill :No Fill,以及 Line Color :No Line。这将使线条消失
然后,我调整了比例,使其看起来好像只绘制了一条数据线。
答案 1 :(得分:2)
这是一个巧妙的技巧,我使用了 lot 。它不会为您提供带边框的表格,您必须为该系列的名称添加文本框,但它允许您自定义图表下方“表格”中显示的内容。
首先,创建图表并为所有数据添加系列:
添加数据标签,然后格式化“其他数据”系列,以便没有行,标记/等。
然后,您可以使用这样的宏来调整数据标签相对于图表/绘图区域的位置。对于这个宏,我只是检查系列的行格式.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
结果应该是这样的: