Excel如何调出宏


之前我们看到的动态图表,大多是通过控件和数据有效性来实现不同项目类别的选择。但实际上,动态图表还可以根据所选的单元格进行动态变化。只需利用如CELL、INDIRECT、ADDRESS、MATCH、OFFSET等简单的函数,就可以实现这种动态显示。

以制作业务员销售业绩动态表为例,让我们深入了解这一过程。

我们要构建图表的数据源。基于工作表的原始数据,我们需要在合适的位置,利用函数构建图表所需的数据源。在B12单元格中,输入“=INDIRECT(ADDRESS(CELL("row"),1))”来获取当前单元格的值;C12单元格中输入“=INDIRECT(ADDRESS(3,CELL("col")))”来获取当前单元格所属的项目类型。接着,在D12和E12单元格中,分别用“=MATCH”函数获取当前单元格在姓名和项目组中的位置。然后在B13至M13的单元格中,使用“=OFFSET”函数结合COLUMN函数生成图表X轴的月份数据。而在B14至M14的单元格中,则根据前一步获取的索引值获取具体的图表数据源。

接下来,我们创建图表。选择B13至M14的单元格区域,并插入一个簇状柱形图。这样,我们所需的图表就基本完成了。

为了让单击单元格时图表能更流畅地动态变化,我们需要加入一些简单的VBA代码。首先点击“开发工具”选项卡,然后进入“Visual Basic”。在出现的代码编辑窗,选择Sheet1并进行编辑,输入三行如图所示的代码。

小贴士:如果窗没有“开发工具”选项卡,可以通过“文件→选项”进入设置界面,然后勾选“开发工具”选项。

设置完成后,根据需求调整图表的样式,并添加图表标签等。在F12单元格中,输入公式“=CONCATENATE(B12,C12,"全年统计")”,这样图表的标题就会随着所选单元格的变化而变化。选择“文件→另存为”,在保存类型中选择“Excel 启用宏的工作簿(.xlsm)”,完成保存即可。