所谓动态数据透视表通常是指数据源可以自动变化的数据透视表。也就是说当数据源发生变化时,比如增加、删除行或列,刷新数据透视表就可以自动扩展或缩小。下面我们来介绍一下常用的创建动态数据透视表的方法。
1、定义名称
我们前面讲过Offset函数的用法,可以指定返回区域的行高、列宽,我们把这两个参数用函数来动态地赋值就可以得到一个动态的区域了。
在【公式】选项卡下面点击“定义名称”,在弹出的对话框中,“名称”框中输入Data(这个可以自己更改),“引用位置”框中输入以下公式。
=OFFSET(数据源!$A$1,,,COUNTA(数据源!$A:$A),COUNTA(数据源!$1:$1))
公式中“数据源”是工作表名称,COUNTA(数据源!$A:$A)用来获取数据区域有多少行,COUNTA(数据源!$1:$1)用来获取数据区域有多少列,当增加、删除行或列的时候,这两个函数返回更改后的数据区域的行数和列数,这样就可以生成动态的区域了。
接着在【插入】选项卡下面点击“数据透视表”,在弹出的对话框中的“表/区域”框中直接输入刚才定义的名称Data,再点确定按钮就创建了数据透视表,把字段加到数据透视表中就完成了。
2、创建表格
选中数据区域中任意一个单元格,点击【插入】选项卡下面的“表格”,Excel会自动识别最大的连续的数据区域。
创建后的表格样式如下。
选中创建的表的任意一个单元格,在【插入】选项卡下面点击“数据透视表”,在弹出的对话框中的“表/区域”框中会自动出现该“表”的名称,这里是“表1”,点击“确定”就可以创建一个动态的数据透视表了。
这里利用的是“表格”区域会自动扩展的原理。
3、选取整列
如果不想麻烦,那么你可以直接选取整列数据作为数据源,这样当你增加行的时候,刷新数据透视表,也可以直接将数据包含进来。
但是要注意以下几个问题:
不能自动扩展列,因为透视表要求每列必须有字段名称,不能是空的;
日期时间类型的字段不能按照年、季度、月、日、小时、分、秒等自动组合;
数据透视表中会显示一个空行。
4、使用SQL查询
在【插入】选项卡下面点击“数据透视表”,在弹出的对话框中选择“使用外部数据源”。
点击“选择链接”,在弹出的对话框中点击左下角的“浏览更多”,选择你的数据源文件,在弹出的对话框中选择数据源中的工作表。
这时就创建了一个数据透视表,但是数据源区域还不是动态的。
选中数据透视表,在【数据】选项卡下面点击“属性”按钮。
在弹出的对话框中点击“定义”,在“命令文本”中输入以下SQL语句。
select * from [SQL数据源$A1:I]
这里“SQL数据源”是工作表名称,A1时起始单元格,I是最后一列。I后面没有数字表示不限定行数。当我们增加或减少行时都可以自动包含进来。
这样就创建了一个动态的数据透视表。
不过这种方法最好能配合VBA去动态地更改数据源,否则将工作表移动到其他地方的话就失效了。这种方法通常可以用来只选择需要的字段或创建高级的查询时使用,比如合并多个工作表的数据,即使表格格式不完全一致也没关系,我们只需要选择需要的字段来创建合并查询就可以了。这里就不过多地展开了,仅当作抛砖引玉吧。
--End--
联系客服