乐于分享
好东西不私藏

告别手动刷新!这个Excel新函数,让你的数据透视表“活”起来

告别手动刷新!这个Excel新函数,让你的数据透视表“活”起来

一个公式搞定多维汇总,还能自动更新,Office 365和WPS用户有福了

做数据分析时,你是不是也经常遇到这样的尴尬:用Sumifs函数写了一大串公式,结果发现行字段一变就得重写;改用数据透视表吧,确实方便,但每次源数据更新,还得手动点一下“刷新”,一不小心就忘了,汇报时数据对不上,那叫一个尴尬。

最近,Excel和WPS新增了一个叫 PIVOTBY 的函数,或许能帮你告别这些烦恼。

它到底是什么?

简单来说,PIVOTBY 就是一个“长了脑子的”数据透视表函数。它既有数据透视表那种拖拽汇总的便捷,又保留了函数公式自动更新的优势。它跟之前介绍的 GROUPBY 函数是“亲兄弟”,只不过 GROUPBY 只能按行分组,而 PIVOTBY 支持按行和列两个维度同时分组,功能更强大。

它的参数看着有11个之多,但其实只要抓住核心,理解起来并不难。我们可以把它想象成一个数据透视表的“三缺一”牌局,等着你下注:

=PIVOTBY(行字段, 列字段, 值字段, 汇总方式, [其他可选参数...])

前四个是必选参数,正好对应数据透视表的四个区域:* 行字段:你想让哪些项目显示在行上(比如“产品类别”)。

  • 列字段:你想让哪些项目显示在列上(比如“销售日期”)。

  • 值字段:你要汇总计算的数据是哪一列(比如“销售额”)。

  • 汇总方式:你要怎么算,求和用 SUM,计数用 COUNTA,平均值用 AVERAGE。

后面的可选参数,可以帮你搞定是否显示总计、小计、排序、筛选等需求,就像数据透视表里的那些设置选项。

案例数据准备

假设我们有一张 2026年Q1销售订单表(共20行),字段如下:

A(订单号)B(日期)C(大区)D(销售员)E(产品)F(金额)
10012026/1/5华东张伟手机3200
10022026/1/8华南李娜电脑5800
10032026/1/12华东王强平板2100
10042026/1/15华北赵敏手机2800
10052026/1/20华南陈晨电脑6200
10062026/2/2华东张伟平板2300
10072026/2/5华北赵敏手机3000
10082026/2/10华南李娜手机3400
10092026/2/14华东王强电脑5400
10102026/2/18华北刘洋平板1900
10112026/2/22华南陈晨电脑6700
10122026/3/1华东张伟手机3100
10132026/3/5华南李娜平板2500
10142026/3/8华北赵敏电脑5200
10152026/3/12华东王强手机2900
10162026/3/15华南陈晨平板2200
10172026/3/18华北刘洋电脑4900
10182026/3/20华东张伟电脑5600
10192026/3/22华南李娜手机3600
10202026/3/25华北赵敏平板2700

案例一:基础二维汇总(按大区×产品汇总金额)

需求:按“大区”为行、“产品”为列,统计各区域的每种产品销售额合计。

公式:=PIVOTBY(C2:C21, E2:E21, F2:F21, SUM)

参数拆解:

  • 行字段 → C2:C21(大区)

  • 列字段 → E2:E21(产品)

  • 值字段 → F2:F21(金额)

  • 汇总方式 → SUM(求和)

返回结果:

大区手机电脑平板总计
华东920016800440030400
华南700018700470030400
华北580010100460020500
总计22000456001370081300

💡 亮点:源数据新增一行后,结果自动更新,无需手动刷新。


案例二:带总计和小计(按大区汇总,内部按销售员细分)

需求:行上先按“大区”分组,再按“销售员”细分;列上按“产品”展开;显示行总计,不显示列总计。

公式:

=PIVOTBY(C2:C21, E2:E21, F2:F21, SUM, 1, 0)

参数拆解:

  • 第5个参数 1 → 显示行总计(每个大区的小计 + 整体总计)

  • 第6个参数 0 → 不显示列总计

返回结果:

大区销售员手机电脑平板总计
华东张伟63005600230014200
华东王强29005400210010400
华东小计920011000440024600
华北赵敏58005200270013700
华北刘洋0490019006800
华北小计580010100460020500
华南李娜70005800250015300
华南陈晨012900220015100
华南小计700018700470030400
总计22000398001370075500

⚠️ 注意:行总计是先汇总每个大区内部,再汇总整体。


案例三:自定义行排序(按指定顺序排列大区)

需求:大区不按字母顺序,而是按 “华北 → 华东 → 华南” 的顺序显示。

公式:=PIVOTBY(    HSTACK(MATCH(C2:C21, {"华北","华东","华南"}, 0), C2:C21),    E2:E21,    F2:F21,    SUM,    1,    0)

参数拆解:

  • 用 MATCH 将每个大区转换成它在自定义列表中的位置序号(华北=1,华东=2,华南=3)

  • 用 HSTACK 把序号和原大区名称拼在一起作为新的“行字段”

  • PIVOTBY 会先按序号排序,结果显示时自然就按自定义顺序排列了

返回结果(大区行按指定顺序):

大区手机电脑平板总计
华北580010100460020500
华东920016800440030400
华南700018700470030400
总计22000456001370081300

案例四:二维表转一维明细表(逆透视)

需求:如果你的源数据本身就是一张二维表(行=销售员,列=产品,值=金额),想把它转换成一维表(销售员、产品、金额三列),方便后续用筛选器或做图表。

源数据(二维表):

销售员手机电脑平板
张伟630056002300
李娜700058002500
王强290054002100

公式:=PIVOTBY(    A2:A4,    ,    B2:D4,    IF({1,0}, N, TOCOL(B1:D1)),    ,    0,    ,    0)

参数拆解(这里用得比较巧妙):

  • 行字段 → A2:A4(销售员)

  • 列字段 → 留空(, 占位)

  • 值字段 → B2:D4(整个数值区域)

  • 汇总方式 → IF({1,0}, N, TOCOL(B1:D1)),这个结构的作用是动态构造表头:

    • N 代表数值本身(即金额)

    • TOCOL(B1:D1) 把三个产品名称按列方向展开成一列

    • IF({1,0}, ...) 把这两列拼在一起,相当于告诉函数:结果要有两列,第一列放数值,第二列放对应的产品名称

  • 第6个参数 0 → 不显示总计

  • 第8个参数 0 → 不显示行小计

返回结果:

销售员金额产品
张伟6300手机
张伟5600电脑
张伟2300平板
李娜7000手机
李娜5800电脑
李娜2500平板
王强2900手机
王强5400电脑
王强2100平板

💡 这就是俗称的“逆透视”或“取消透视”,在Power Query里需要点好几下,用 PIVOTBY 一个公式搞定,而且数据变了自动刷新。


案例五:多条件筛选(只汇总“手机”和“电脑”两类产品)

需求:只想看“手机”和“电脑”的汇总数据,过滤掉“平板”。

公式:=PIVOTBY(    C2:C21,    E2:E21,    F2:F21,    SUM,    1,    0,    ,    E2:E21="手机")

(或把条件写成 E2:E21="手机" 配合 OR 逻辑,但 PIVOTBY 的筛选参数支持数组条件,可以用 (E2:E21="手机")+(E2:E21="电脑"))

更严谨的写法:

=PIVOTBY(    C2:C21,    E2:E21,    F2:F21,    SUM,    1,    0,    ,    (E2:E21="手机")+(E2:E21="电脑"))

参数拆解:

  • 第8个参数(筛选条件)→ (E2:E21="手机")+(E2:E21="电脑"),+ 在这里相当于“或”逻辑,只要满足任一条件即为 TRUE

返回结果(只有手机和电脑,平板被过滤掉):

大区手机电脑总计
华东92001680026000
华南70001870025700
华北58001010015900
总计220004560067600

案例对比:PIVOTBY vs 传统数据透视表

对比维度PIVOTBY传统数据透视表
数据更新自动刷新(公式随源数据变化)需手动右键刷新
排序灵活性可自定义任意顺序(结合MATCH)仅支持升序/降序
与其他函数联动可作为中间结果嵌套在其他公式中无法被其他公式直接引用
学习门槛参数较多,需理解数组运算拖拽操作,对新手友好
复杂百分比计算暂不支持(如“行汇总百分比”)支持多种值显示方式
适用版本Office 365 / Excel 2021 / WPS最新版所有Excel版本

操作提示

  1. 版本检查:在Excel中输入 =PIVOTBY(,如果没有智能提示,说明你的版本不支持(需Office 365或WPS最新版)。

  2. 参数顺序别记错:前四个必选(行、列、值、汇总方式),后面的可选参数建议用逗号占位,比如要写筛选条件时,前面几个不用的参数要写 ,,, 来占位。

  3. 错误排查:如果结果出现 #VALUE!,检查行、列、值三个区域的行数是否一致;如果出现 #NAME?,说明函数名不被识别。

  4. 动态数据源:建议把数据区域定义为表格(Ctrl+T),然后用表名称引用(如 表1[金额]),这样新增行时公式会自动扩展,比固定区域更方便。

写在最后

PIVOTBY 函数的出现,让我们在“数据透视表”和“函数公式”之间找到了一个很好的平衡点。它不仅保留了透视分析的功能,还具备了公式的实时动态性和与其他函数组合的灵活性。

当然,目前它还不能完全替代经典的数据透视表,比如一些“值显示方式”的复杂百分比计算,可能还依赖传统透视表来完成。但对于大多数日常的交叉汇总、动态报表需求来说,PIVOTBY 是一个值得上手的新工具。如果你用的是最新版的Office 365或WPS,不妨打开Excel试一下。

相关学习资料