跨工作表统计:如何计算指定员工列表中匹配目标属性的人数
跨工作表统计在岗员工中特定属性人数的解决方案(Excel/Google Sheets)
核心需求回顾
- Tab1!A列:X日在岗员工名单
- Tab2!A列:全体员工名单,Tab2!B列:员工对应属性
- 统计目标:Tab1中属性为
Attribute1的员工总数(示例结果为2)
通用解决方案(Excel & Google Sheets 兼容)
SUMPRODUCT 公式
这是兼容性最强的方案,适用于所有版本的Excel和Google Sheets:
=SUMPRODUCT(--(Tab2!B:B="Attribute1"), --(COUNTIF(Tab1!A:A, Tab2!A:A)>0))
逻辑说明:
--(Tab2!B:B="Attribute1"):将Tab2中属性为Attribute1的行转换为1,其他为0--(COUNTIF(Tab1!A:A, Tab2!A:A)>0):判断Tab2的员工是否出现在Tab1的在岗名单中,存在则为1,否则为0- SUMPRODUCT将两个数组对应位置相乘后求和,最终得到同时满足「属性为Attribute1」且「当日在岗」的员工数
Excel 专属优化方案(365/2021 及以上版本)
利用动态数组函数更直观实现:
=COUNTA(FILTER(Tab1!A:A, (XLOOKUP(Tab1!A:A, Tab2!A:A, Tab2!B:B, "")="Attribute1")*(Tab1!A:A<>"")))
逻辑说明:
XLOOKUP(Tab1!A:A, Tab2!A:A, Tab2!B:B, ""):为Tab1的每个在岗员工匹配对应的属性,无匹配则返回空值FILTER筛选出属性为Attribute1且非空的在岗员工COUNTA统计筛选结果的数量
Google Sheets 专属优化方案
方案1:动态数组公式
=COUNTA(FILTER(Tab1!A:A, XLOOKUP(Tab1!A:A, Tab2!A:A, Tab2!B:B, "")="Attribute1", Tab1!A:A<>""))
逻辑和Excel版一致,Google Sheets原生支持该语法。
方案2:QUERY 函数
更灵活的查询式统计,适合复杂场景扩展:
=QUERY(Tab2!A:B, "SELECT COUNT(A) WHERE B='Attribute1' AND A MATCHES '"&TEXTJOIN("|", TRUE, FILTER(Tab1!A:A, Tab1!A:A<>""))&"'", 0)
逻辑说明:
FILTER(Tab1!A:A, Tab1!A:A<>""):排除Tab1中的空单元格TEXTJOIN("|", TRUE, ...):将在岗员工名单转为正则匹配的字符串(用|分隔)- QUERY从Tab2中统计满足「属性为Attribute1」且「员工在在岗名单中」的数量
为什么你之前的尝试没成功?
- COUNTIF/COUNTIFS:这类函数要求条件区域与计数区域一一对应,跨表直接使用无法同时关联「Tab1的在岗状态」和「Tab2的属性」两个独立维度
- COUNTIF+VLOOKUP:如果未处理数组运算(比如旧版Excel未按Ctrl+Shift+Enter确认数组公式),或者未针对空值/无匹配情况做处理,会导致结果错误
内容的提问来源于stack exchange,提问作者sherbertherbert
相关产品推荐
相关产品推荐

