You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel技术咨询:跨July、August工作表按组/部门统计唯一姓名及函数适配

解决跨工作表统计组/部门下唯一姓名数量的问题

先明确下你的核心需求:要统计每个组/部门在July和August两个工作表中所有出现过的唯一姓名总数,对吧?其实你尝试的SUMPRODUCT+MATCH/ISNA组合完全能帮你达成目标,下面给你拆解具体的实现方法:

方法1:手动指定组/部门的跨表唯一姓名统计

假设你要统计的组是"研发一组",部门是"技术部",可以用这个公式(记得把单元格范围换成你实际的数据区域):

=SUMPRODUCT(--(COUNTIFS(July!$B:$B,"研发一组",July!$C:$C,"技术部",July!$A:$A,July!$A:$A)>0)) + SUMPRODUCT(--(COUNTIFS(August!$B:$B,"研发一组",August!$C:$C,"技术部",August!$A:$A,August!$A:$A)>0)) - SUMPRODUCT(--(COUNTIFS(July!$B:$B,"研发一组",July!$C:$C,"技术部",July!$A:$A,August!$A:$A)>0))

公式逻辑拆解:

  • 前两个SUMPRODUCT分别计算July和August中对应组/部门下的唯一姓名数(COUNTIFS(...,姓名列,姓名列)>0用来筛选出唯一姓名,--把布尔值转成1/0后求和)
  • 最后一个SUMPRODUCT是减去两个表中重复出现的唯一姓名数(也就是同时在两个表对应组/部门出现的姓名,避免重复统计)

方法2:动态匹配汇总表的组/部门(更高效)

如果你的汇总表已经列出了所有组和部门,想在对应行自动计算,可以用这个数组公式(Excel 365/2021直接回车即可,旧版本需要按Ctrl+Shift+Enter触发数组计算):

=SUM(--(UNIQUE(VSTACK(FILTER(July!$A:$A,(July!$B:$B=$E2)*(July!$C:$C=$F2)),FILTER(August!$A:$A,(August!$B:$B=$E2)*(August!$C:$C=$F2))))<>""))

公式逻辑拆解:

  • FILTER分别提取两个表中对应组(E2)和部门(F2)的所有姓名
  • VSTACK把两个表的姓名合并成一个列表
  • UNIQUE去除重复姓名
  • SUM(--(...<>""))统计非空的唯一姓名数量(排除FILTER可能返回的空值)

关于你尝试的SUMPRODUCT(--(ISNA(MATCH())))

这个思路完全正确!比如要统计August中该组/部门有但July中没有的唯一姓名数,可以用:

=SUMPRODUCT(--(ISNA(MATCH(August!$A:$A,IF((July!$B:$B=$E2)*(July!$C:$C=$F2),July!$A:$A,""),0))*(August!$B:$B=$E2)*(August!$C:$C=$F2)*(August!$A:$A<>"")))

然后把这个结果加上July中该组/部门的唯一姓名数,就能得到跨表的总唯一数——本质和方法1的逻辑一致,只是拆分了重复项的计算步骤。

最后提个小建议:尽量用具体的单元格范围(比如July!$A$2:$A$1000)代替整列引用,这样公式运行速度会快很多哦!

内容的提问来源于stack exchange,提问作者Sarah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:38:46