MICROSOFT

EP08. “GetPivotData GETPIVOTDATA 函数”

首页 Microsoft 工具 Excel · Data Analysis · Pivot Tables · EP08
约 5 分钟· #EP08#Excel#Pivot Tables
🔒 登录后可标记已读
  • 在透视表外的单元格用普通的 = 加单元格引用去抓透视表里的数值,一旦透视表被筛选、排序或重新布局,引用的位置就可能对不上号,抓到错的数字
  • GETPIVOTDATA 函数是专门为了解决这个问题设计的——它按字段名和项目名去抓数据,不管透视表内部怎么变动位置都能抓对
  • 这篇笔记教你怎么用它,以及它的限制
  • 前置知识是会用透视表
  • 学完能安全地在透视表外引用透视表数据

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


一般引用还是 GETPIVOTDATA,怎么选

方式适合场景备注
普通单元格引用(=D7透视表之后不会再被筛选/排序/重新布局一旦布局变了,引用就可能抓错数字
GETPIVOTDATA透视表之后还会被筛选/排序,或给别人操作按字段名+项目名定位,不受布局变动影响

用一般单元格引用的问题

  1. 在 B14 输入 =D7,引用透视表里"豆类(Beans)出口到法国”的金额
  2. 这时候用筛选器把透视表改成只显示蔬菜类的出口量
  3. 结果:因为筛选后行的位置变了,D7 这个位置现在对应的其实是胡萝卜(Carrots),B14 抓到了错误的数字

[截图:筛选后 B14 显示错误数字,公式栏还是写死的 =D7]


用 GETPIVOTDATA 解决

  1. 重新选中 B14,输入 =,然后直接点击透视表里"豆类出口到法国"那个单元格(不要手打单元格坐标)
  2. Excel 会自动帮你写出完整的 GETPIVOTDATA 公式,而不是普通的 =D7
  3. 这时候再用筛选器只显示蔬菜类,B14 依然正确显示豆类出口到法国的金额,不会因为透视表内部重新排列而抓错

[截图:B14 公式栏显示完整的 GETPIVOTDATA 公式,按字段名+项目名定位]

📌 关键机制:GETPIVOTDATA 按「字段名 + 项目名」去定位数据,不是按单元格坐标,所以透视表怎么筛选/排序都不影响引用的正确性。


可见性限制

GETPIVOTDATA 只能抓当前可见的数据。如果筛选条件把某个项目整个隐藏掉(比如只显示水果类,豆类被完全筛掉),公式会返回 #REF! 错误,因为该数据当下已经不在透视表里显示了。


多参数用法

GETPIVOTDATA 可以带多组「字段/项目」参数来精确定位,比如同时指定国家和产品两个条件,函数就能算出 6 个参数的组合定位;如果只带 4 个参数(比如只按国家),就能汇总出该国家的总计(例如美国的出口总额)。参数越多,定位越精确;参数越少,返回的汇总层级越高。


关闭自动生成 GETPIVOTDATA

如果不想让 Excel 每次点击透视表单元格时都自动套用 GETPIVOTDATA(有时只是想要普通引用),可以在 PivotTable Analyze(数据透视表分析)选项卡的选项菜单里取消勾选 Generate GetPivotData。


实操示例

场景:做一份汇总报表,需要固定引用透视表里某几个具体数字,但透视表本身之后还会被别人重新筛选/排序。

  1. 用点击生成 GETPIVOTDATA 的方式建立引用,而不是手打坐标
  2. 之后不管透视表怎么变动,报表里的引用值都保持正确

学完你会

  • ✅ 用点击生成 GETPIVOTDATA,代替容易失效的手打单元格坐标引用
  • ✅ 知道 GETPIVOTDATA 只能抓当前可见的数据,筛选掉的项目会返回 #REF!
  • ✅ 需要时关闭 Generate GetPivotData,改用普通简单引用

常见错误

  • 手打单元格坐标去引用透视表(比如 =D7),透视表一变动位置引用就错了
  • 筛选掉了某个项目导致 GETPIVOTDATA 返回 #REF!,却没意识到是"数据被隐藏了"而不是公式写错
  • 不知道可以关闭 Generate GetPivotData,每次想手打简单引用时都被自动转成又长又复杂的公式

Sources

Blog / Website:

  1. GetPivotData