动态Excel图表
有如下数据,想要用图表展示,但是想要每次只显示一列,通过单选按钮来实现功能。记住,只想要在Excel中实现,还不用宏,怎么做呢?


创建单选按钮
确认Excel的菜单栏里有没有开发工具,如果没有,可以选择文件 -> 选项 ->自定义功能区,勾选开发工具,让开发工具菜单显示出来。


选择插入 -> 表单控件 -> 选项按钮(窗体控件)。按照列名修改按钮的名称。


在单选按钮上右键 -> 设置控件格式,把单元格链接至某一个单元格,可以把这个单元格藏在图表后面。

这时候切换单选按钮,就会发现这个单元格的值随着按钮而改变。第一个按钮显示1,第二个显示2,以此类推。

OFFSET函数指定数据引用
然后使用offset函数获得数据的引用。Excel给出了官方定义:以指定的引用为参考系,通过给定偏移量返回新的引用。意思是,找一个单元格作为基准,找到需要的单元格(一个或多个),返回这些单元格。


offset函数参数的意思是:
reference:基准单元格,可以设置为A1,左上角第一个,也可以按需设置
rows:向下偏移几行,如果是负数,就是向上偏移
cols:向右偏移几列,如果是负数,就是向左偏移
[height]:想要返回几行
[width]:想要返回几列
根据范例数据得到公式=OFFSET(A1,1,H4-1,7,1),H4就是上面链接了单选按钮的单元格。可以在单元格中校验公式的正确性,之后复制函数留着备用。

在公式菜单栏下,打开名称管理器。


新建,填入名称,引用位置填入offset函数内容。

发现引用位置会自动把Sheet名称加上,注意在单元格名称行列加上$,使用绝对地址。

插入图表,选择数据,




最后把图表往上拖一点,盖住按钮链接的单元格,或者直接把单元格字体颜色改成白色。再看下效果图。

2020.3.10追加
如果想要在一个图表里显示多条曲线,可以在名称管理器中加上多个名称,每个名称还是按照一条曲线创建。不需要把列宽变为多个。在选择数据时,添加2次。


