数力
指南价格

Excel 透视表怎么去重计数?

更新于 2026-09-29 · 阅读约 5 分钟

简短回答

Excel 透视表的去重计数叫「非重复计数」,但默认看不到:要在「插入 → 数据透视表」时勾选「将此数据添加到数据模型」,之后在「值字段设置」里才能选「非重复计数」。这只适用于 Windows 版 Excel,已经建好的普通透视表要重新创建。

代价是数据模型透视表不能再用「计算字段」。Mac 版 Excel 没有数据模型,WPS 表格的透视表也没有非重复计数,这时用辅助列,或者 Microsoft 365 的 UNIQUE / GROUPBY 公式。不管用哪种方法,都别拿「计数」当去重计数:计数数的是行,一张订单有几行商品,就会被数几次。

计数和去重计数差多少:一份真实数据

下面是一家超市 4 个多月的收银明细,共 65,535 行。一行是小票上的一条商品记录,所以一张单据号常常占好几行。按收银员分别用三种方式来数:

收银员明细行数(计数)订单数(去重单据号)商品数(去重商品货号)
司马婉清21,29710,3401,941
周慧敏10,0444,8351,527
林悦31,52115,3532,089
许丽娟297155185
赵雅琴2,3761,185797
合计65,53531,8682,240
数据来源:数力示例数据「超市销售示例数据-2026」,按收银员名称分组计算。

还要注意,去重计数不能相加。5 位收银员的商品数加起来是 6,539,全店却只卖了 2,240 种商品,因为同一种商品会被好几个人卖过。订单数加起来刚好是 31,868,那是因为每张单只属于一个收银员。所以合计必须对全部数据重新去重,不能把各行相加。

在 Excel / WPS 里怎么去重计数

方法一:数据模型透视表(Windows 版 Excel)

  1. 1选中数据区域里的任意一个单元格,点「插入 → 数据透视表」。
  2. 2在创建对话框底部勾选「将此数据添加到数据模型」,确定。
  3. 3把「收银员名称」拖到「行」,把「单据号」拖到「值」。
  4. 4点值区域里的「计数项:单据号」→「值字段设置」,汇总方式选「非重复计数」,确定。

这是结果最可靠的办法,总计也是重新去重的。代价有三个:数据模型透视表不能用「计算字段」,想算「销售额 ÷ 订单数」得学 DAX 写度量;已有的普通透视表不能切换过去,要重建;Mac 版 Excel 没有数据模型,这一步做不了。

方法二:辅助列 + 普通透视表(Mac、WPS 都能用)

思路是给每个值「第一次出现」的那一行记 1,其余记 0,透视表再对这一列求和。数订单时最快:先按单据号排序,让同一张单连在一起,然后在空白列输入下面的公式并向下填充:

=IF(B2<>B1,1,0)

要数的值分散在各处(比如商品)时,只能用 COUNTIF 回头查。这类公式要计算很久:只有一个条件的 =IF(COUNTIF($D$2:D2,D2)=1,1,0),在 65,535 行上用 Mac 版 Excel 实测算了约 25 秒。另外,「第一次出现」是按某种分组算的:上面这列数的是全店第一次出现的商品,按收银员拆开就少算了。要按收银员数,得把收银员也写进条件,改用 COUNTIFS,而这时透视表的合计又变成各组相加(上面的 6,539)。每换一种分组,就要重写一列。

网上常见的另一种写法,是不加辅助列、一个公式算出全表去重数:

=SUMPRODUCT(1/COUNTIF(D2:D65536,D2:D65536))

方法三:UNIQUE / GROUPBY 公式(Microsoft 365)

不用透视表,直接用公式。全表订单数(Excel 2021 及以上可用):

=COUNTA(UNIQUE(B2:B65536))

按收银员分组去重,底部带重新去重的总计(需要 Microsoft 365 的 GROUPBY):

=GROUPBY(A2:A65536,B2:B65536,LAMBDA(x,ROWS(UNIQUE(x))))

两个公式在 Mac 版 Microsoft 365 上实测都是秒出,结果和上表一致。缺点是它只是一块公式区域,换个分组要改公式,不能像透视表那样拖字段。

WPS 表格

WPS 官方社区的答复是,数据透视表「暂时还不支持」非重复计数。用方法二的辅助列即可,思路完全相同。另一个办法是先「删除重复项」再透视,但删掉的行里的金额和数量也没了,一定要在副本上操作。

在数力里

在数力里:去重计数就是一种汇总方式

数力的度量有六种快速汇总:求和、平均值、最小值、最大值、计数和去重计数。不需要数据模型,也不用辅助列,Windows 和 Mac 上一样。合计行对全部数据重新去重,换什么分组都是对的。去重计数的度量还能直接参与加减乘除,比如「销售额 ÷ 订单数」。

从导入示例数据,到按收银员并排看明细行数、订单数和商品数(录屏 · 36 秒)
  1. 1新建分析,导入 CSV 或 Excel 文件。
  2. 2点「度量值」旁的 ⊕,度量名称填「订单数」,「汇总」选「去重计数」,「字段」选「单据号」,保存。
  3. 3把「收银员名称」拖到「行」,把「订单数」拖到「度量」。想按月份、按商品看,把别的字段拖进「行」就行,度量不用改。

对数力AI 说

「按收银员统计订单数(单据号去重)和卖出的商品种数(商品货号去重)」

数力的透视表:超市销售示例数据按收银员分组,明细行数合计 65,535,订单数(去重单据号)合计 31,868,商品数(去重商品货号)合计 2,240,合计行是重新去重的结果而不是各行相加
同一份示例数据在数力里:商品数的合计是 2,240,而不是 5 人相加的 6,539。
免费下载数力Windows / macOS · 数力AI 免费使用,无需注册

常见问题

值字段设置里为什么找不到「非重复计数」?
因为这张透视表没有加入数据模型。重新「插入 → 数据透视表」,勾选「将此数据添加到数据模型」再建。Mac 版 Excel 和 WPS 表格没有这个选项,只能用辅助列或公式。
加入数据模型后,「计算字段」为什么变灰了?
数据模型透视表不支持计算字段和计算项。需要算比值(比如销售额 ÷ 订单数),要在 Power Pivot 里用 DAX 的 `DISTINCTCOUNT` 函数新建度量。
去重计数的合计,为什么不等于各行加起来?
因为同一个值可能出现在好几组里。一种商品被 3 个收银员卖过,在每个人那里各算 1 种,全店却只算 1 种。合计小于各行相加是正常的,等于各行相加反而说明每个值只属于一组。
明明是同一个人,透视表里却出现了两行?
多半是名字前后有空格或全角、半角不同,Excel 会把它们当成两个值,去重计数也会各算各的。用 `TRIM` 函数或「查找和替换」清理后再透视。

现在下载,下份报告交给数力AI

数力AI 免费体验,无需注册

数力是电脑端应用,请在 Windows 或 Mac 上安装

Windows

推荐

Windows 10 / 11(64 位)

下载 .exe

或 下载免安装版 .zip (解压即用)

下载已开始 · 首次打开需 2 步

下载完成后,双击运行安装程序。数力 还在申请微软的软件签名,在那之前 Windows 会把它当作「无法识别的应用」拦一下 —— 这是正常的,按下面两步放行即可,只需一次。(若浏览器提示文件不常下载,选「保留」。)

  1. 1

    点左上角的「更多信息」。

    「Windows 已保护你的电脑」提示,箭头指向「更多信息」
  2. 2

    点「仍要运行」。以后就能直接打开了。

    展开后的提示,箭头指向「仍要运行」按钮

macOS

Apple 芯片(M1 及以上)· macOS 11 或更高

下载 .dmg

下载已开始 · 安装只需 3 步

下载完成后,打开 .dmg 文件,把 数力 拖进「应用程序」,再双击打开。

  1. 1

    首次打开会被拦下 —— 请选择 完成。

    macOS 提示未打开数力,箭头指向「完成」按钮
  2. 2

    打开「系统设置 → 隐私与安全性」,滑动到底部,点「仍要打开」。

    系统设置的隐私与安全性页面,底部有「仍要打开」按钮
  3. 3

    再次确认,点「仍要打开」,按系统提示进行许可。以后就能直接打开了。

    确认对话框,箭头指向「仍要打开」按钮
提示「已损坏」?

打开「终端」粘贴执行:

xattr -dr com.apple.quarantine /Applications/数力.app

下载即表示您已阅读并同意 《服务条款》 与 《隐私政策》。