Excel中的窗体控件功能非常强大,但有关它们的资料却很少见,甚至Excel帮助文件也是语焉不详。本文通过一个实例说明怎样用窗体控件快速构造出动态图表。
假设有一家公司要统计两种产品(产品X,产品Y)的销售情况,这两种产品的销售区域相同,不同的只是它们的销售量。按照常规的思路,我们可以为两种产品分别设计一个图表,但更专业的办法是只用一个图表,由用户选择要显示哪一批数据——即,通过单元按钮来选择图表要显示的数据。
为便于说明,我们需要一些示例数据。首先在A列输入地理区域,如图一,在B2和C2分别输入“产品X”和“产品Y”,在B3:C8区域输入销售数据。
图1
一、提取数据
接下来的步骤是把某种产品的数据提取到工作表的另一个区域,以便创建图表。由于图表是基于提取出来的数据创建,而不是基于原始数据创建,我们将能够方便地切换提取哪一种产品的数据,也就是切换用来绘制图表的数据。
在A14单元输入=A3,把它复制到A15:A19。我们将用A11单元的值来控制要提取的是哪一种产品的数据(也就是控制图表要描述的是哪一批数据)。现在,在A11单元输入1。在B13单元输入公式=OFFSET(A2,0,$A$11),再把它复制到B14:B19。
OFFSET函数的作用是提取数据,它以指定的单元为参照,偏移指定的行、列数,返回新的单元引用。例如在本例中,参照单元是A2(OFFSET的第一个参数),第二个参数0表示行偏移量,即OFFSET返回的将是与参照单元同一行的值,第三个参数($A$11)表示列偏移量,在本例中OFFSET函数将检查A11单元的值(现在是1)并将它作为偏移量。因此,OFFSET(A2,0,$A$11)函数的意义就是:找到同一行且从A2(B2)偏移一列的单元,返回该单元的值。
现在以A13:B19的数据为基础创建一个标准的柱形图:先选中A13:B19区域,选择菜单“插入”→“图表”,接受默认的图表类型“柱形图”,点击“完成”。检查一下:A13:B19和图表是否确实显示了产品X的数据;如果没有,检查你是否严格按照前面的操作步骤执行。把A11单元的内容改成2,检查A13:B19和图表都显示出了产品B的数据。
二、加入选项按钮
第一步是加入选项按钮来控制A11单元的值。选择菜单“视图”→“工具栏”→“窗体”(不要选择“控件工具箱”),点击工具栏上的“选项按钮”,再点击图表上方的空白位置。重复这个过程,把第二个选项按钮也放入图表。
右击第一个选项按钮,选择“设置控件格式”,然后选择“控制”,把“单元格链接”设置为A11单元,选中“已选择”,点击“确定”,如图二。
图2
把第一个选项按钮的文字标签改成“产品X”,把第二个选项按钮的文字标签改成“产品Y”(设置第一个选项按钮的“控制”属性时,第二个选项按钮的属性也被自动设置)。点击第一个选项按钮(产品X)把A11单元的值设置为1,点击第二个选项按钮把A11单元的值设置为2。
点击一下图表上按钮之外的区域,然后依次点击两个选项按钮,看看图表内容是否根据当前选择的产品相应地改变。
按照同样的办法,一个图表能够轻松地显示出更多的数据。当然,当产品数量很多时,图表空间会被太多的选项按钮塞满,这时你可以改用另一种控件“组合框”,这样既能够控制一长列产品,又节约了空间。
另外,你还可以把A11单元和提取出来的数据(A13:B19)放到另一个工作表,隐藏实现动态图表的细节,突出动态图表和原始数据。