数据透视表如何设置动态数据源
1、首先利用offset函数自定义一个名称(offset函数的具体用法在这里就不做说明了各位请自行百度)。具体步骤(图二):选择 公式 --定义名称。在弹出的对话框中 (名称)可以随便写,在引用位置后面输入=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),5),然后点确定,这样一个动态的数据源就建好了。是不是很方便
注:公式中5表示一共有5列的数据,如果你的数据不止5列的话写成对应的数字既可,其他的不变。

2、第二步当然是新建一个数据透视表了,点击数据源的任一位置再插入透视表,需要注意的是在 1 的位置我们写入的是定义好的名称(数据源),而不是系统默认选中的区域,另外为了演示方便我就直接在边上生成透视表了(如图三)

3、新建好透视表后就要开始验证了,首先在原数据上新加一条销售数量为10000的记录,但是透视表并没有立即发生变化(如图四),那是不是错了呢?我只能说你想多了,你都还没有刷新呢。于是我们在透视表里右键选择 刷新,这时新加的数据就更新过来了(图五)是不是比起重新新建透视表方便多了。


1、下面开始介绍第二种方法,首先要说明的是利用表格样式时,你的数据源要先转化为这种样式,通常的做法是直接将源表转化(如图六-图七)
注:需要注意的是在转换时一定要先全选数据再点插入选择 表格 并且表包含标题的选项一定要勾上


2、转换完成后点击任一表格中的单元格 ,功能区就会多一个表格工具选项卡点击后(如图八)其中需要注意的是表名称,因为这将会成为我们生成透视表的数据源。
下面就要利用这个表格新建一个透视表,选择其中的任一一个单元格,点插入透视表,发现系统已经默认帮我们填好了数据源 正是表格的名称(表2)



3、创建好后下面就要开始测试了。和上面一样插入一条比较大的数据记录,然后右键 刷新,数据顺利更新过来了(如图十一)是不是也很方便。

1、通关上面的介绍你会发现,动态数据源的原理:就是先生成一个动态的区域然后将该区域作为透视表的数据源,当源表发生变化时通过 刷新 功能实现数据的动态更新,同样的第三种方法也是依据这个思路,只是利用的工具不同。
2、下面开始进入正题,首先要说明的是在哪里写sql脚本以及如何写脚本
1:在哪里写:由于篇幅关系 可以参考下面的经验链接里前面五个步骤
2:如何写:由于只是一个数据源,只用写入select * from [sheet1$]然后点确定就可以了
3、需要注意的是
1:这里的*号表示所有的字段名也就是列的名称
2:select * from [sheet1$]是把整张SHEET1表作为一个数据源,因此我们新建的透视表就不要放在sheet1里面,不然会出现错误;当然如果要放在sheet1里也是可以的,不过脚本就要稍微改动下了 select * from [sheet1$A:E]
如图十二是最后的测试结果
