Excel公式求助:list工作表N列统计A-M列在data表的匹配次数
解决Excel中整行多列匹配次数统计问题
方法1:用COUNTIFS逐一指定列条件
COUNTIFS其实完全能实现需求,只是需要把A到M列的匹配条件逐一列出来。在List表的N2单元格输入以下公式,下拉填充即可:
=COUNTIFS(Data!A:A, List!A2, Data!B:B, List!B2, Data!C:C, List!C2, Data!D:D, List!D2, Data!E:E, List!E2, Data!F:F, List!F2, Data!G:G, List!G2, Data!H:H, List!H2, Data!I:I, List!I2, Data!J:J, List!J2, Data!K:K, List!K2, Data!L:L, List!L2, Data!M:M, List!M2)
这个公式会统计Data表中同时满足A列等于List表A2、B列等于List表B2……M列等于List表M2的行数,也就是整行完全匹配的次数。
方法2:用SUMPRODUCT简化多列匹配(兼容旧版Excel)
如果觉得COUNTIFS的参数太长,试试SUMPRODUCT结合数组判断的写法,适合所有Excel版本:
=SUMPRODUCT(--(MMULT(--(Data!A$2:M$1000=List!A2:M2),ROW($1:$13)^0)=13))
- 注意把
Data!A$2:M$1000改成你实际的数据范围(不要用整列,避免卡顿) - 核心逻辑:先逐单元格判断是否匹配,再对每行的匹配结果求和,只有当13列全匹配时求和结果为13,最后统计这样的行数。
方法3:Excel 365/2021专属简化写法
如果你用的是支持动态数组的新版本Excel,用字符串拼接的方式更简洁:
=COUNTIF(BYROW(Data!A:M,LAMBDA(r,TEXTJOIN("|",,r))),TEXTJOIN("|",,A2:M2))
- 把每行A-M列的内容用
|拼接成一个字符串(选不会出现在单元格内容里的分隔符即可),然后统计当前行拼接字符串在Data表所有行中的出现次数。
内容的提问来源于stack exchange,提问作者PinkstonMatt
相关产品推荐
相关产品推荐

