WPS表格如何用公式按条件统计不重复人数?

功能定位:为什么“条件+去重”必须公式化
在数据合规场景里,按条件统计不重复人数常被用于审计抽样、考勤核对、补贴发放名单锁定。WPS表格 12.9.1 的公式引擎已完整支持动态数组,能把“筛选→去重→计数”三步合成一步,既避免手工透视的临时文件散落,也便于后续在“协作历史”中留痕追溯。
与数据透视表相比,公式法的最大优势是“字段变动可自动重算”,且结果单元格能被其他公式再次引用;代价则是需要一次性写对逻辑,否则数组溢出会拖慢大文件。下文给出两条官方验证可用的套路,并标注何时该回退到透视表。
套路 A:UNIQUE+FILTER+COUNTA 动态数组
1. 适用版本与入口
Windows/macOS 桌面端需 12.9.1 及以上;移动端目前仅支持查看溢出结果,不可编辑公式。路径:打开表格 → 选中空白单元格 → 直接输入公式栏即可。
2. 标准写法
假设 A 列是“部门”,B 列是“员工工号”,需统计“研发部”不重复人数:
=COUNTA(UNIQUE(FILTER(B:B,A:A="研发部")))
公式会先在内存中把满足条件的工号抽出来,再去重,最后用 COUNTA 计数文本型工号。若工号是数值,可用 COUNT 替代。
3. 可复现验证步骤
- 在测试簿手动输入 10 行示例数据,让“研发部”出现 3 人次但仅 2 个不同工号。
- 输入上述公式后,应返回 2;若返回 3,说明 UNIQUE 作用域包含了空白,需把 B:B 改成 B2:B11 等确定性区域。
- 打开“公式”→“公式求值”逐步观察,确认 FILTER 返回数组确实只有研发部行。
4. 边界与副作用
警告
当数据超过 5 万行且条件宽松时,动态数组会一次性占用数百 MB 内存,可能导致 32 位 WPS 崩溃。经验性观察:在 8 GB 内存机器上,若返回数组>10 万行,界面会出现“计算中”假死数十秒。缓解办法:把整列引用改成 Excel 表格(Ctrl+T)的结构化引用,例如[工号]、[部门],可让引擎只扫描已用区域。
套路 B:SUMPRODUCT+COUNTIFS 的兼容旧版方案
1. 何时必须用
若文件需分发给仍在使用 11.x 版本或 Linux 信创环境的同事,UNIQUE 会显示 #NAME?,此时可回退到 SUMPRODUCT 数组:
=SUMPRODUCT((A2:A1000="研发部")*(1/COUNTIFS(B2:B1000,B2:B1000,A2:A1000,"研发部")))
逻辑是:给每个满足条件的行一个“1/出��次数”权重,再求和,即得去重计数。
2. 性能与可审计性
该公式为单单元格数组,不会溢出,兼容 2003 语法,但计算复杂度是 O(n²)。经验性观察:在 1 万行数据、旧款 i5 笔记本上,每次重算约 2–3 秒,可接受;超过 5 万行则明显卡顿。若需留痕,可在“文件”→“属性”→“自定义”里新增字段“公式版本=SUMPRODUCT”,方便后续比对。
决策树:该选哪条套路?
| 评估维度 | UNIQUE+FILTER | SUMPRODUCT |
|---|---|---|
| 版本要求 | 12.9.1 以上 | 11.x 起可用 |
| 数据规模 | ≤5 万行流畅 | ≤1 万行流畅 |
| 协作留痕 | 溢出区域可批注 | 单格易锁定 |
| 后续引用 | 可直接作为数据源 | 需外套命名区域 |
若文件需交付给上级审计部门,建议优先 UNIQUE+FILTER,并把溢出区域复制为值到“锁定”工作表,再对复制结果加批注说明公式来源,实现“可读+可回溯”。
操作路径:桌面与移动端差异
桌面端(Windows/macOS)
- 打开数据工作簿 → 选中空白单元格 → 在公式栏直接输入上述任一公式。
- 若出现“溢出区域被占用”,检查下方是否有非空单元格,清空即可。
- 如需固化结果:选中溢出区域 → Ctrl+C → 右键“粘贴为值”。
移动端(Android/iOS)
- 目前仅支持查看由桌面端生成的溢出结果,不可编辑动态数组公式。
- 若需在手机端调整条件,建议把“条件”单独放在 D1 单元格,公式改为引用 D1,这样手机改值即可重算。
例外与回退:透视表+删除重复何时更好
当文件需要多人同时分块协同,且条件组合高达数十种时,公式法会导致频繁重算冲突。此时可用“数据”→“删除重复项”+“数据透视表”两步走:
- 先复制目标列到临时工作表 → 数据 → 删除重复项。
- 插入透视表 → 将“部门”拖入筛选 → 计数工号即可。
缺点是步骤无法自动更新,但优势是计算一次性完成,后续协作不再触发重算,适合月末一次性上报场景。
合规与数据留存:让公式结果可审计
提示
审计处常要求“原始数据—计算逻辑—结果”三段式可追溯。推荐做法:1. 把原始数据设为“只读”表格并加保护密码;2. 在相邻列插入公式,溢出区域用浅色填充;3. 文件→信息→版本历史→标记版本“公式计算基准日”,即使后续有人改数据,也能一键回到基准快照。
故障排查:常见错误码与处置
| 现象 | 可能原因 | 验证与处置 |
|---|---|---|
| #SPILL! | 溢出区域被非空单元格阻挡 | 选中公式单元格下方区域,删除或移走内容 |
| #NAME? | 版本低于 12.9 或不支持 UNIQUE | 改用 SUMPRODUCT 方案;或升级至最新版本 |
| 结果明显偏大 | 整列引用把空白当 0 计入 | 把 B:B 改成结构化引用如 Table1[工号] |
| 文件体积暴涨 | 多次复制溢出区域为值,残留隐藏数组 | 文件→检查工作簿→清除空白数组→保存 |
适用/不适用场景清单
- 适用:日报考勤抽查、项目补贴名单锁定、课程签到唯一学生数、合规抽样审计。
- 不适用:>10 万行明细且需频繁切换条件;需多人同时编辑同区域;终端为 Linux 信创旧版(11.x 以下)。
最佳实践 5 条检查表
- 把“条件”单独放在单元格,供移动端随时调整。
- 数据区先转 Excel 表格(Ctrl+T),避免整列引用拖慢性能。
- 公式完成后立即用“版本历史”打基准快照,方便审计回溯。
- 若文件对外分发,复制公式结果为值,防止对方版本不支持动态数组。
- ≥5 万行数据先用“筛选”抽样 1000 行验证公式返回是否符合预期,再全量应用。
FAQ:WPS 表格按条件统计不重复人数
移动端能否直接输入 UNIQUE 公式?
截至 12.9.1 移动版仅支持查看溢出结果,不可编辑 UNIQUE 公式。建议把条件放到单独单元格,手机改值即可触发桌面端重算。
文件发到 Linux 信创环境报错 #NAME? 怎么办?
信创版 11.x 尚未支持动态数组,请改用 SUMPRODUCT+COUNTIFS 兼容方案,或升级至信创专用 12.9.1 rpm 包。
溢出区域能否加批注?
可以,但批注会随溢出区域大小自动移位。若需固定审计意见,建议复制为值后再加批注。
5 万行以上还有别的轻量方案吗?
可先用“数据”→“删除重复项”生成辅助列,再用常规 COUNTIFS 统计,计算一次性完成,内存占用最低。
公式结果如何固化并加国密水印?
复制为值→审阅→文档加密→勾选“国密 SM4”→权限管理→只读水印→输入“统计基准日+工号”即可。
总结与下一步行动
WPS表格 12.9.1 已提供两条官方验证可用的“按条件统计不重复人数”公式路径:UNIQUE+FILTER 适合 12.9 以上且数据≤5 万行;SUMPRODUCT 兼容旧版但性能受限。选定方案后,用“版本历史”打快照、把条件拆到独立单元格、再对结果复制为值加固,即可在满足合规留痕的同时,兼顾移动端查看与审计回溯。
下一步,请打开你的目标文件,先用 1000 行小样验证公式返回是否符合预期,确认无误后全量应用,并第一时间在“文件→信息→版本历史”里标记基准版本——这样无论数据如何变动,你都能一键回到审计起点。
📺 相关视频教程
原来Excel跨表合并多个表格这么简单😭 #excel #办公技巧 #职场干货 #office办公技巧


