1

从下图可以看出我的文档结构。我希望从 A 列(不包括单元格 A1,不包括此特定单元格的图表)、B 和 D 列构建时间线图表。我正在寻找通过使用 VBA 使图表动态化的方法,以便新的用户添加的事件将自动显示在图表中,无需手动更改图表的范围。

该范围不必立即/连续更改——只要它在单击“创建新事件视图”按钮后面的宏时发生更改。当用户有更多事件要添加到表中时,她只需将事件添加到表中,通过创建一个新表并删除旧表,她也会有一个更新的图表。

问题是,如何做到这一点?

在此处输入图像描述

4

2 回答 2

3

您不需要 VBA 来使图表动态化。只需创建随数据增长和缩小的动态命名范围。图表的 VBA 可以引用该命名范围,而不会增加代码负担。但是您甚至可能根本不需要 VBA。使用动态范围定义的图表将立即更新。无需代码。

图表标签的范围名称和公式:

chtLabels =Events!A2:Index(Events!$A:$A,counta(Events!$A:$A))

B 列的范围名称和公式

chtBegin =offset(chtlabels,0,1)

D 列的范围和公式

chtDuration =offest(chtlabels,0,3)

编辑数据源,而不是固定单元格范围,输入格式的命名范围

=Events!*RangeName*

您需要为系列值和图表的类别轴提供相应的范围名称。

注意:当您提供动态范围名称作为图表的来源时,您必须在范围名称引用中包含文件名或工作表名称。当您关闭并重新打开对话框时,您会发现 Excel 会自动将您输入的格式转换为[Filename]RangeName

注意 2:有许多不同的公式选项可以创建动态范围名称。在这种情况下,我们使用列 A 的索引,并通过计算单元格来确定最后填充的单元格。这仅在 A 列中的所有单元格都有文本时才有效。如果您的数据在 A 列中有间隙(我认为您没有),则可以应用不同的公式来确定范围。

于 2013-06-07T13:31:39.220 回答
1
  1. 将范围转换为表格。
  2. 选择范围内的任何单元格。
  3. 然后按Ctrl+L。这会将您的范围转换为表格

然后,您可以对其进行格式化并右键单击它并插入图表。这将允许您添加行或列。甚至添加会自动为您填写的公式列。您现在还可以设置使用引用此行的动态范围的公式,按列的名称调用列。使用标题/数据。获取小计。它将提供很大的灵活性。

于 2013-06-07T13:42:18.750 回答