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

我的文档的结构可以从下面的图片中看到。 我希望从列A(不包括单元格A1,图表中至关重要的是不包括此特定单元格),B和D.我正在寻找方法使图表dynamic使用VBA,以便新用户添加的事件将自动显示在图表中,而无需手动更改图表的范围。

范围不必立即/连续更改 – 只要点击“创build新事件视图”button后面的macros,就会更改。 当用户有更多的事件添加到表中时,她可以将事件添加到表中,并通过创build新表并删除旧表,她也将有一个更新的图表。

问题是,如何把这个关掉?

在这里输入图像说明

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

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

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

列B的范围名称和公式

 chtBegin =offset(chtlabels,0,1) 

D列的范围和公式

 chtDuration =offest(chtlabels,0,3) 

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

 =Events!*RangeName* 

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

注意:当您提供dynamic范围名称作为图表来源时,您必须包含文件名称或表格名称以及范围名称参考。 当您closures并重新打开对话框时,您会发现Excel自动将您的条目转换为格式[Filename]RangeName

注2:有许多不同的公式选项来创builddynamic范围名称。 在这种情况下,我们使用列A的索引并通过计算单元格来确定最后一个填充的单元格。 这只适用于列A中的所有单元格都有文本。 如果您的数据在列A(我认为您不这样做)中存在空白,则可以应用不同的公式来确定范围。

  1. 将范围转换为表格。
  2. select范围内的任何单元格。
  3. 然后按下Ctrl+L 这将把你的范围变成一个表格

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