excel图表怎么设置动态数据源(Excel图表多行动态数据源)

首页常识更新时间:2023-08-04 17:08:19

大家好,我是永不止步的老牛。

在Excel使用过程中,我们会碰到一种情况:“只知道最大返回的数据行数,实际根据条件动态返回不定数目的行,此时要使图表能动态根据返回的有效数据变化”,说起来很绕,我们用例子描述。

图中左边是原始数据,右边根据选择的小组,返回左边表格中该小组的数据,我们已知最大返回行是8行,1组有3行,2组有3行,3组有2行,要根据选择的小组,折线图根据右边的数据进行变化。

猛一看挺简单,但实际数据透视表好像不完全符合,图表直接用名称也没办法解决

在我前面的一篇文章中()提到过一种有点瑕疵的解决办法:我们观察数据后,用返回行数最多的那个小组的返回数据做折线图的数据源,示例中1组返回3行,用1组的3行做图表的数据源,2组显示没问题,但选择3组时只有2行,图表实际还是3个序列,因第3行没数据,图上没第3根线,但图例中有第3个图例,如果返回的数据行数差距比较大,会很难看,效果和动图如下:

我们可以用2句VBA代码来帮忙,为了演示清楚,我们分步来实现,解决步骤如下:

1、建立一个Excel名称“数据”,用OFFSET函数动态返回选择小组后的数据。

名称“数据”的公式是:OFFSET($M$1,,,COUNTIF($M$1:$M$9,">''"),6)

为了方便阅读,我去掉了公式中工作表的名字,OFFSET函数根据COUNTIF返回的不为空的数据行号动态返回数据。OFFSET函数用法请参照《》,Countif函数用法请参照《》。

2、增加辅助数据,为第3步做准备,如下图,E13:E15放的是3个小组,F13准备放选择后的小组号,F14放组合好的小组名称。

3、这里是核心,我们把根据序列下拉选择的换掉,因为触发不了VBA宏,我们去掉L2中的序列下拉选择,添加一个表单控件的下拉框,新添加下拉框的“数据源区域”(下拉框的供选择的项)设置成第2步的E13:E15,“单元格链接”(下拉框选择后索引存放的位置)设置成F13。

4、编写一个VBA宏“刷新图表”,代码如下:

Sub 刷新图表()

ActiveSheet.ChartObjects(1).Activate

ActiveChart.SetSourceData Source:=Range("数据")

End Sub

ActiveSheet.ChartObjects(1).Activate:表示选中当前表单的第1个图表。

ActiveChart.SetSourceData Source:=Range("数据"):表示给选中图表设置数据源。

5、给下拉框指定宏,让下拉动作和VBA宏代码关联起来。

完美,我们再也不用管返回多少行了,这种办法适应用图表展示各类动态数据,建议大家收藏起来。

Excel技巧持续更新中,如果对你有帮助,请关注点赞支持一下。

如果你对VBA感兴趣,可以在我主页看一下我写的几篇文章。

,
展开阅读全文
推荐内容
热门内容
热门文章

© 2007-2022 http://www.anhuiqq.cn,All Rights Reserved.