如何使用VBA自动扩展图表的范围?

时间:2013-06-07 12:51:33

标签: excel excel-vba charts vba

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

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

问题是,如何解决这个问题?

enter image description here

2 个答案:

答案 0 :(得分: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列中有间隙(我认为您没有这样做),可以应用不同的公式来确定范围。

答案 1 :(得分:1)

  1. 将范围转换为表格。
  2. 选择范围内的任何单元格。
  3. 然后按Ctrl+L。这会将您的范围转换为表格
  4. 然后,您可以对其进行格式化并右键单击它并插入图表。这将允许您添加行或列。甚至可以添加自动填充的公式列。您现在也可以设置使用引用此行的动态范围的公式,按名称调用列。使用标题/数据。获得小计。它将提供很大的灵活性。