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

标签 excel charts vba

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

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

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

enter image description here

最佳答案

您不需要 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 列中有间隙(我认为您没有),则可以应用不同的公式来确定范围。

关于excel - 如何使用 VBA 自动扩展图表的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16984647/

相关文章:

vba - 您能否帮助我更多地了解有关VBA错误处理的良好做法?

excel - 使用findnext填充多维数组VBA Excel

python - 无法按 Pandas 数据框中的时间戳编制索引

vba - Excel 中的多个图表

c# - 如何在 .NET 图表的 Y 轴上对数据进行分组?

python - 如何在图表区的 Python-pptx 图表中为图表提供图表标题(不是幻灯片标题)

excel - 在 Excel 中查找字符的第 N 个实例(无 VBA)

c# - EPPlus,删除该行中的行和图像

javascript - 简单的 d3.js 示例图表开始

excel - 调用带参数的子时应使用哪些参数(ByVal Target As Range)