基于第三列值统计两列唯一值出现次数的Excel函数问题
解决Excel中按条件统计跨列人员出现次数的问题
问题核心
仅统计第三列(Number)值为2的行中,Person1(A列)、Person2(B列)内各姓名的出现次数,需将唯一姓名与对应次数并列展示。
原公式报错原因
你用的=COUNTIFS(A2:B100,E2,C2:C100,">1")报错,是因为COUNTIFS要求条件区域与计数区域维度完全匹配:A2:B100是二维区域,而C2:C100是一维区域,两者无法对应匹配,导致数据类型错误。
可行解法
解法1:SUMPRODUCT(兼容多数Excel版本)
假设E列是你用=UNIQUE(VSTACK(A2:A100,B2:B100))得到的唯一姓名列表,在F2单元格输入以下公式,下拉填充即可:
=SUMPRODUCT((C2:C100=2)*((A2:A100=E2)+(B2:B100=E2)))
- 逻辑拆解:
(C2:C100=2):筛选出Number列值为2的行,返回布尔值数组(TRUE=1,FALSE=0)(A2:A100=E2)+(B2:B100=E2):统计每行中目标姓名在A/B列的出现次数(单次出现加1,两列都出现加2)- SUMPRODUCT将两个数组相乘后求和,得到符合条件的总次数
解法2:动态数组一步到位(适用于Excel 365/2021)
无需单独生成E列唯一值,直接输入以下公式,会自动溢出生成“唯一姓名+次数”的两列结果:
=LET( filtered_names, FILTER(VSTACK(A2:A100,B2:B100),C2:C100=2), unique_names, UNIQUE(filtered_names), counts, BYROW(unique_names,LAMBDA(x,COUNTIF(filtered_names,x))), HSTACK(unique_names, counts) )
- 逻辑拆解:
- 先筛选出所有Number=2的行中,A、B列的姓名并合并成数组
- 提取数组中的唯一姓名
- 统计每个唯一姓名的出现次数
- 用HSTACK将姓名和次数合并为两列
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

