1

我只是想知道是否有一种方法可以在 VBA 的图表对象中自定义 DataTable 的内容?即有没有办法改变表格的内容而不是实际的图表数据?见下图,其中PosEU(最左边的图片)已更改为OtherData1OtherData2(最右边的图片),显然表格中也有新数据。需要进入表的数据在范围对象中找到。

谢谢,

在此处输入图像描述

4

2 回答 2

2

这是我经常使用的一个巧妙的技巧。它不会为您提供带边框的表格,您必须为系列名称添加文本框,但它允许您自定义图表下方“表格”中显示的内容。
首先,创建图表并为所有数据添加系列:

在此处输入图像描述

添加数据标签,然后格式化“其他数据”系列,以便没有线条、标记/等:

在此处输入图像描述

然后,您可以使用这样的宏来调整数据标签相对于图表/绘图区域的位置。对于这个宏,我只是检查该系列的行格式.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

结果应该是这样的:

在此处输入图像描述

于 2013-10-08T14:30:13.613 回答
2

不幸的是,我无法摆脱数据表中引用所见数据的行,但我可以在数据表中添加更多行(仅限数字)

例子:
数据表中包含多条线的图形

为此,我将所有线条添加到图表的数据中,包括我只想在数据表中显示的数据。
然后,我为那些我不想显示为标记填充的数据行格式化:无填充和线条颜色:无线条。这将使线条消失。
然后我调整了比例,使它看起来好像只绘制了一条数据线。

于 2013-10-08T13:10:38.063 回答