Excel中如何比对两列数据并统一输出PASS/FAIL结果
批量比对两列数据并统一输出PASS/FAIL解决方案
问题原因
你之前尝试的COUNTIF公式无效,核心原因是:
COUNTIF无法直接处理数组运算(比如ABS(G91:G102-H91:H102)生成的差值数组)- 语法上
COUNTIF的条件参数需要用引号包裹(比如"<0.01"),但即便修正语法,它也不支持对数组的逐元素判断统计
可行公式方案
方案1:SUMPRODUCT 通用版(兼容所有Excel版本)
使用SUMPRODUCT统计不符合条件的数据对数量,若为0则输出PASS:
=IF(SUMPRODUCT(--(ABS(G91:G102-H91:H102)>0.01))=0,"PASS","FAIL")
--(ABS(...)>0.01):将「差值绝对值超过0.01」的逻辑判断结果转为1(不符合)或0(符合)SUMPRODUCT:对所有1/0求和,若结果为0,说明所有数据对都符合要求
方案2:MAX 简洁版(Excel 2019及以上/365)
只要所有数据对的最大差值绝对值≤0.01,就说明全部符合:
=IF(MAX(ABS(G91:G102-H91:H102))<=0.01,"PASS","FAIL")
- 此公式利用数组运算特性,直接计算所有差值绝对值的最大值,判断是否满足阈值
方案3:BYROW+ALL 动态数组版(Excel 365专属)
通过动态数组函数逐行判断并统一验证:
=IF(ALL(BYROW(G91:G102:H91:H102,LAMBDA(row,ABS(INDEX(row,1)-INDEX(row,2))<=0.01))),"PASS","FAIL")
BYROW:遍历每一行数据,用LAMBDA计算该行两列的差值绝对值是否符合要求ALL:验证所有行的判断结果是否全为TRUE
注意事项
- 若数据范围存在空值,可在公式中加入非空判断,比如方案1可修改为:
=IF(SUMPRODUCT(--(ABS(G91:G102-H91:H102)>0.01)*(G91:G102<>"")*(H91:H102<>""))=0,"PASS","FAIL") - 确保
G91:G102和H91:H102的范围完全对应,避免行数不一致导致错误
内容的提问来源于stack exchange,提问作者rdoucette
相关产品推荐
相关产品推荐

