Excel中COUNTIFS搭配数组条件生成动态数组的实现问题
解决方案:动态统计唯一字母对应数字1/2的出现次数
针对你需要的动态数组溢出效果,以下两种方法都能在G1单元格输入后自动匹配F列的所有唯一字母,输出对应统计结果:
方法1:BYROW + COUNTIFS(推荐,逻辑清晰)
直接在G1单元格输入公式:
=BYROW(F1#, LAMBDA(x, COUNTIFS(Table1[Letter], x, Table1[Number], {"1","2"})))
- 原理:
BYROW遍历F列溢出的每个唯一字母x,COUNTIFS同时匹配字母x和数字为1/2的条件,自动累加符合条件的行数,结果会动态溢出到G列对应位置。
方法2:SUM + 逻辑判断(兼容更多场景)
如果需要更灵活的条件组合,也可以用这个公式:
=BYROW(F1#, LAMBDA(x, SUM(--(Table1[Letter]=x)*(Table1[Number]={"1","2"}))))
- 原理:
--(Table1[Letter]=x)把字母匹配的逻辑结果转成1/0,*(Table1[Number]={"1","2"})同时判断数字是否为1或2,两者相乘后求和得到总次数,再通过BYROW实现逐字母的动态统计。
关于你之前公式的问题
你用OFFSET返回的区域作为COUNTIFS的第二个条件时,函数会把区域当作整体匹配,无法和每个字母的条件一一对应,所以结果不正确。上面的方法通过BYROW逐个处理每个字母,再结合多条件统计,就能解决这个问题。
内容的提问来源于stack exchange,提问作者Akvavi4
相关产品推荐
相关产品推荐

