经常使用数据透视表的同学应该都发现一个问题,当数据区域更新以后,数据透视表的引用区域却无法自动更新,如何解决这个痛点?
案例:将下图 1 的数据表制作成数据透视表,要求当数据表下方新增行后,刷数据透视表可以自动更新数据区域。
效果如下图 2 所示。
解决方案:老规矩,先看一下常规情况下会怎么样。
1. 选中数据表的任意单元格 --> 选择菜单栏的“插入”-->“数据透视表”
2. 在弹出的对话框中选择“现有工作表”及位置 --> 点击“确定”
3. 反正只是为了看效果,随便拖动一下字段,能演示结果就行。
现在在数据表下方添加红色的行,试试数据透视表能不能更新区域。
4. 选中数据透视表的任意单元格 --> 右键单击 --> 在弹出的菜单中选择“刷新”
没有反应,完败。
下面就是今天要教的正确方法。
5. 按 Ctrl+F3 --> 在弹出的对话框中点击“新建”按钮
6. 在弹出的对话框中按以下方式设置 --> 点击“确定”:
名称:输入“部门”或其他所需的名称
引用位置:输入公式 =OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),4)
公式释义:
offset 的作用是返回对单元格或单元格区域中指定行数和列数的区域的引用;
参数为 OFFSET(起始位置, 偏移的行数, 偏移的列数, [返回的高度], [返回的宽度]);
本例中,引用的区域就是从 A1 单元格开始,行列都不用偏移,所以都为 0;
返回的高度为 COUNTA(Sheet1!$A:$A),即动态计算 A 列的非空行数;
本例中的列宽基本不会动,所以固定设置为 4 就可以了,如果列宽也是动态的,那么也需要用 counta 函数来动态计算
7. 点击“关闭”按钮。
现在再次创建数据透视表,此时就不需要选中数据表了。
8. 直接选择菜单栏的“插入”-->“数据透视表”
9. 在弹出的对话框的“表/区域”处输入“部门”--> 选择“现有工作表”及其位置 --> 点击“确定”
10. 再次拖动字段生成数据透视表。
此时在数据表下方新增行。
11. 选中数据透视表的任意单元格 --> 右键单击 --> 选择“刷新”
好了,数据透视表的数据区域自动刷新了。