我的文档结构可以从下图中看到。我希望从A列(不包括单元格A1,对于图表中不包括此特定单元格至关重要),B和D构建时间线图表。我正在寻找通过使用VBA使图表动态化的方法用户添加的事件将自动显示在图表中,而无需手动更改图表的范围。
范围不必立即/连续更改 - 只要在单击“创建新事件视图”按钮后面的宏时它就会发生变化。当用户有更多事件要添加到表中时,她只需将事件添加到表中,通过创建新表并删除旧表,她也将拥有更新的图表。
问题是,如何解决这个问题?
答案 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)
Ctrl+L
。这会将您的范围转换为表格然后,您可以对其进行格式化并右键单击它并插入图表。这将允许您添加行或列。甚至可以添加自动填充的公式列。您现在也可以设置使用引用此行的动态范围的公式,按名称调用列。使用标题/数据。获得小计。它将提供很大的灵活性。