EP08. “GetPivotData GETPIVOTDATA 函数”
🔒 登录后可标记已读- 在透视表外的单元格用普通的
=加单元格引用去抓透视表里的数值,一旦透视表被筛选、排序或重新布局,引用的位置就可能对不上号,抓到错的数字 - GETPIVOTDATA 函数是专门为了解决这个问题设计的——它按字段名和项目名去抓数据,不管透视表内部怎么变动位置都能抓对
- 这篇笔记教你怎么用它,以及它的限制
- 前置知识是会用透视表
- 学完能安全地在透视表外引用透视表数据
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
一般引用还是 GETPIVOTDATA,怎么选
| 方式 | 适合场景 | 备注 |
|---|---|---|
普通单元格引用(=D7) | 透视表之后不会再被筛选/排序/重新布局 | 一旦布局变了,引用就可能抓错数字 |
| GETPIVOTDATA | 透视表之后还会被筛选/排序,或给别人操作 | 按字段名+项目名定位,不受布局变动影响 |
用一般单元格引用的问题
- 在 B14 输入
=D7,引用透视表里"豆类(Beans)出口到法国”的金额 - 这时候用筛选器把透视表改成只显示蔬菜类的出口量
- 结果:因为筛选后行的位置变了,D7 这个位置现在对应的其实是胡萝卜(Carrots),B14 抓到了错误的数字
[截图:筛选后 B14 显示错误数字,公式栏还是写死的 =D7]
用 GETPIVOTDATA 解决
- 重新选中 B14,输入
=,然后直接点击透视表里"豆类出口到法国"那个单元格(不要手打单元格坐标) - Excel 会自动帮你写出完整的 GETPIVOTDATA 公式,而不是普通的
=D7 - 这时候再用筛选器只显示蔬菜类,B14 依然正确显示豆类出口到法国的金额,不会因为透视表内部重新排列而抓错
[截图:B14 公式栏显示完整的 GETPIVOTDATA 公式,按字段名+项目名定位]
📌 关键机制:GETPIVOTDATA 按「字段名 + 项目名」去定位数据,不是按单元格坐标,所以透视表怎么筛选/排序都不影响引用的正确性。
可见性限制
GETPIVOTDATA 只能抓当前可见的数据。如果筛选条件把某个项目整个隐藏掉(比如只显示水果类,豆类被完全筛掉),公式会返回 #REF! 错误,因为该数据当下已经不在透视表里显示了。
多参数用法
GETPIVOTDATA 可以带多组「字段/项目」参数来精确定位,比如同时指定国家和产品两个条件,函数就能算出 6 个参数的组合定位;如果只带 4 个参数(比如只按国家),就能汇总出该国家的总计(例如美国的出口总额)。参数越多,定位越精确;参数越少,返回的汇总层级越高。
关闭自动生成 GETPIVOTDATA
如果不想让 Excel 每次点击透视表单元格时都自动套用 GETPIVOTDATA(有时只是想要普通引用),可以在 PivotTable Analyze(数据透视表分析)选项卡的选项菜单里取消勾选 Generate GetPivotData。
实操示例
场景:做一份汇总报表,需要固定引用透视表里某几个具体数字,但透视表本身之后还会被别人重新筛选/排序。
- 用点击生成 GETPIVOTDATA 的方式建立引用,而不是手打坐标
- 之后不管透视表怎么变动,报表里的引用值都保持正确
学完你会
- ✅ 用点击生成 GETPIVOTDATA,代替容易失效的手打单元格坐标引用
- ✅ 知道 GETPIVOTDATA 只能抓当前可见的数据,筛选掉的项目会返回 #REF!
- ✅ 需要时关闭 Generate GetPivotData,改用普通简单引用
常见错误
- 手打单元格坐标去引用透视表(比如
=D7),透视表一变动位置引用就错了 - 筛选掉了某个项目导致 GETPIVOTDATA 返回
#REF!,却没意识到是"数据被隐藏了"而不是公式写错 - 不知道可以关闭 Generate GetPivotData,每次想手打简单引用时都被自动转成又长又复杂的公式
Sources
Blog / Website: