Excel的PIVOTBY函数:10个最常用示例
- 2026-09-23 02:41:37
它的参数长这样(一共11个参数,前4个必须填):
=PIVOTBY(行字段, 列字段, 值区域, 汇总方式, [是否显示标题], [行总计], [行排序], [列总计], [列排序], [筛选条件], [相对位置])
别被参数个数吓到,日常够用的就是前4个:拿什么当行、拿什么当列、算什么数、怎么算。

跟传统透视表最大的不同:数据变了,结果自动跟着变,不用手动刷新。
注意:PIVOTBY需要 Office 365 或 WPS最新版 才支持。
示例1:最基础的交叉汇总
场景:一张销售明细表,想看每个区域、每个产品分别卖了多少。
数据表:
| 销售员 | 产品 | 区域 | 销量 |
|---|---|---|---|
| 陈晓峰 | 键盘 | 华东 | 120 |
| 林雨桐 | 鼠标 | 华南 | 85 |
| 王浩 | 键盘 | 华南 | 95 |
| 周敏 | 显示器 | 华东 | 60 |
| 郑欣 | 鼠标 | 华东 | 110 |
| 陈晓峰 | 显示器 | 华南 | 75 |
公式(F1单元格,自动溢出):
=PIVOTBY(C2:C7, B2:B7, D2:D7, SUM)
结果:
| 区域 | 键盘 | 鼠标 | 显示器 |
|---|---|---|---|
| 华东 | 120 | 110 | 60 |
| 华南 | 95 | 85 | 75 |

参数解释:
行字段:C2:C7(区域)→ 华东、华南各占一行
列字段:B2:B7(产品)→ 键盘、鼠标、显示器各占一列
值区域:D2:D7(销量)→ 中间格子填的就是这个
汇总方式:SUM → 求和
用在哪:销售报表、库存统计、任何"行×列"的交叉汇总。
示例2:按月份汇总
场景:数据里有具体日期,但报表想按月来看,而不是按天。
数据表:
| 日期 | 销售员 | 产品 | 销量 |
|---|---|---|---|
| 2026-1-15 | 陈晓峰 | 键盘 | 120 |
| 2026-1-20 | 林雨桐 | 鼠标 | 85 |
| 2026-2-5 | 王浩 | 键盘 | 95 |
| 2026-2-18 | 周敏 | 显示器 | 60 |
| 2026-3-3 | 郑欣 | 鼠标 | 110 |
| 2026-3-12 | 陈晓峰 | 显示器 | 75 |
公式(F1单元格,自动溢出):
=PIVOTBY(C2:C7, MONTH(A2:A7)&"月", D2:D7, SUM)
结果:
| 产品 | 1月 | 2月 | 3月 |
|---|---|---|---|
| 键盘 | 120 | 95 | 0 |
| 鼠标 | 85 | 0 | 110 |
| 显示器 | 0 | 60 | 75 |
参数解释:
列字段用了 MONTH(A2:A7)&"月" → 从日期里提取月份,自动生成"1月、2月、3月"作为列标题。
用在哪:月度销售趋势、月度费用分析、任何需要按时间维度汇总的报表。
示例3:按季度汇总
场景:月份太细,老板想看季度汇总。
数据表:同上例。
公式(F1单元格,自动溢出):
=PIVOTBY(C2:C7, ROUNDUP(MONTH(A2:A7)/3,0)&"季度", D2:D7, SUM)
结果:
| 产品 | 1季度 | 2季度 |
|---|---|---|
| 键盘 | 215 | 0 |
| 鼠标 | 85 | 110 |
| 显示器 | 60 | 75 |
参数解释:ROUNDUP(MONTH(A2:A7)/3,0) → 1月÷3=0.33进1,2月÷3=0.67进1,3月÷3=1,统统变成"1季度"。

用在哪:季度经营分析、季度绩效考核。
示例4:计数统计
场景:不是算销量总和,而是统计每个区域有多少笔订单。
数据表:同示例2。
公式(F1单元格,自动溢出):
=PIVOTBY(C2:C7, B2:B7, D2:D7, COUNT)
结果:
| 区域 | 键盘 | 鼠标 | 显示器 |
|---|---|---|---|
| 华东 | 1 | 1 | 1 |
| 华南 | 1 | 1 | 1 |
参数解释:
汇总方式换成 COUNT → 数的是每个交叉格子里有几个非空值,不是加总。
用在哪:统计订单笔数、统计客户数、统计出勤天数。
示例5:平均值统计
场景:不看总数,看每个区域每个产品的平均销量。
数据表:同示例2。
公式(F1单元格,自动溢出):
=PIVOTBY(C2:C7, B2:B7, D2:D7, AVERAGE)
结果:
| 区域 | 键盘 | 鼠标 | 显示器 |
|---|---|---|---|
| 华东 | 120 | 110 | 60 |
| 华南 | 95 | 85 | 75 |
参数解释:
汇总方式换成 AVERAGE → 算平均值。
用在哪:平均客单价、平均分、人均产值。
示例6:显示行总计
场景:除了每个区域各产品的销量,还想看每个区域的合计是多少。
数据表:同示例1。
公式(F1单元格,自动溢出):
=PIVOTBY(C2:C7, B2:B7, D2:D7, SUM, , 1)
结果:
| 区域 | 键盘 | 鼠标 | 显示器 | 总计 |
|---|---|---|---|---|
| 华东 | 120 | 110 | 60 | 290 |
| 华南 | 95 | 85 | 75 | 255 |
参数解释:
第五个参数留空(自动处理标题)
第六个参数写
1→ 底部显示行总计写
-1就把总计放到顶部
用在哪:报表需要合计行的场景,不用自己额外加公式。
示例7:隐藏标题行
场景:PIVOTBY默认会带标题行,有时候想把结果嵌到别的报表里,不需要标题。
数据表:同示例1。
公式(F1单元格,自动溢出):
=PIVOTBY(C2:C7, B2:B7, D2:D7, SUM, 0)
结果(从F1开始显示,没有标题行):
| 华东 | 120 | 110 | 60 |
|---|---|---|---|
| 华南 | 95 | 85 | 75 |
参数解释:
第五个参数写 0 → 不显示标题。
用在哪:把PIVOTBY结果作为中间数据,再套给其他公式继续加工。
示例8:按行排序
场景:产品太多了,想把销量最高的排在最前面。
数据表:同示例1。
公式(F1单元格,自动溢出):
=PIVOTBY(C2:C7, B2:B7, D2:D7, SUM, , , 1)
参数解释:
第七个参数控制行排序
数字对应行字段的列。这里行字段只有一列(区域),写
1表示按区域名称升序(A→Z)写
-1就是降序(Z→A)
注意:如果想按"销量"这个数值来排序,而不是按"区域"名字,需要用更复杂的写法(配合SORT函数),这里不展开,先把基础用法练熟。
用在哪:把业绩最好的排前面、把销量最高的置顶。
示例9:多行维度
场景:行标签不能只有一个维度,想看"大区+部门"两个层级。
数据表:
| 大区 | 部门 | 产品 | 区域 | 销量 |
|---|---|---|---|---|
| 北方 | 销售一部 | 键盘 | 华东 | 120 |
| 北方 | 销售二部 | 鼠标 | 华南 | 85 |
| 南方 | 销售一部 | 键盘 | 华南 | 95 |
| 南方 | 销售二部 | 显示器 | 华东 | 60 |
| 北方 | 销售一部 | 鼠标 | 华东 | 110 |
| 南方 | 销售二部 | 显示器 | 华南 | 75 |
公式(G1单元格,自动溢出):
=PIVOTBY(A2:B7, D2:D7, E2:E7, SUM)
结果:
| 大区 | 部门 | 华东 | 华南 |
|---|---|---|---|
| 北方 | 销售一部 | 230 | 0 |
| 北方 | 销售二部 | 0 | 85 |
| 南方 | 销售一部 | 0 | 95 |
| 南方 | 销售二部 | 60 | 75 |
参数解释:
行字段选了 A2:B7 两列 → Excel自动把"大区"和"部门"组合成多级行标签。
用在哪:组织架构报表(总部→分公司→部门)、商品分类报表(大类→中类→小类)。
示例10:筛选数据后再透视
场景:只想看"销量大于100"的记录,低于100的不参与汇总。
数据表:同示例1。
公式(F1单元格,自动溢出):
=PIVOTBY(C2:C7, B2:B7, D2:D7, SUM, , , , , , D2:D7>100)
结果:
| 区域 | 键盘 | 鼠标 | 显示器 |
|---|---|---|---|
| 华东 | 120 | 110 | 0 |
| 华南 | 0 | 0 | 0 |
参数解释:
第十个参数写 D2:D7>100 → 只有销量大于100的行才参与汇总。筛选条件的行数必须和原数据行数一致。

用在哪:只看大额订单、只看达标业绩、只看高优先级项目。
最容易犯的3个错
错1:行、列、值三个区域的行数不一致
比如行字段选A2:A100,列字段选B2:B99,行数不一样,Excel直接报错。必须保持相同的行数。
错2:汇总方式写成了文字而不是函数
第四参数必须是函数,比如SUM、AVERAGE、COUNT。写成"求和"这种文字是不行的。
错3:版本不支持
PIVOTBY是比较新的函数。如果在Excel里输入后不识别,说明版本太老。Office 365和WPS最新版才支持。
一句话总结
PIVOTBY就干一件事:给你一堆明细数据,它自动按行和列分类汇总,生成一张交叉表。跟传统透视表比,最大的好处是 "一次写好,永久自动更新" ——数据变了,结果跟着变,不用手动刷新。