Excel是否有批量统计人员对应类型数的函数?或R中类似方法
解决方案
针对你的需求——统计每个人员对应的非零事件的唯一type数量,以下分Excel版本给出高效公式,无需手动去重或逐个处理:
一、Excel 365/2021(支持动态数组)
一次性统计所有人员
在任意空白单元格(比如B10)输入以下公式,会自动生成所有人员的统计结果:
=BYCOL(B2:D8, LAMBDA(col, COUNTA(UNIQUE(FILTER(A2:A8, col>0)))))
公式原理:
FILTER(A2:A8, col>0):筛选出当前人员列中事件计数>0的所有type值UNIQUE(...):对筛选后的type去重,得到该人员对应的唯一type列表COUNTA(...):统计去重后的type数量BYCOL(...):遍历所有人员列(B2:D8),对每一列应用上述逻辑,一次性输出所有结果
单个人员验证(可选)
如果只需要单独统计某个人(比如Person A),公式更简洁:
=COUNTA(UNIQUE(FILTER(A2:A8, B2:B8>0)))
二、旧版Excel(无动态数组支持)
单个人员统计(数组公式)
针对Person A,在空白单元格输入以下公式后,按Ctrl+Shift+Enter触发数组计算:
=SUM(1/COUNTIFS(A2:A8, A2:A8, B2:B8, ">0"))
公式原理:
COUNTIFS(A2:A8, A2:A8, B2:B8, ">0"):统计每个type在当前人员列中非零的出现次数1/...:将重复出现的type转换为分数(比如某type出现2次,贡献2个1/2,总和为1)SUM(...):求和后得到该人员对应的唯一type数量
批量处理
将上述公式中的B2:B8替换为对应人员的列(比如Person B用C2:C8),复制公式到其他人员的统计单元格即可。
针对你的样本数据验证结果
- Person A:3(对应type b、d、c)
- Person B:4(对应type a、b、c、d)
- Person C:3(对应type a、c、d)
内容的提问来源于stack exchange,提问作者Rene
相关产品推荐
相关产品推荐

