Google Sheets中OR语句未执行精确匹配问题求助
解决Google Sheets数组公式中OR函数的逐行判断问题
你的公式出错的核心原因是:OR函数属于聚合函数,在ArrayFormula中使用时,它不会逐行判断每个单元格的条件,而是对整个B2:B区域的条件做整体判定——只要区域内存在任意一个单元格满足B2:B="BRKW"或B2:B="GKW1-2",整个OR表达式就会返回TRUE,导致所有行都执行第一个IF分支,而非仅针对符合条件的行。
要实现逐行的精确匹配判断,需要将OR替换为数组兼容的条件写法,以下两种方式均可:
方式一:布尔值相加判断
利用Google Sheets中布尔值自动转换为1/0的特性,相加结果大于0即表示至少一个条件成立:
={"Formula";ArrayFormula( if( (B2:B="BRKW")+(B2:B="GKW1-2")>0, if( D2:D <= A2:A, D2:D, A2:A ), "abc" ) )}
方式二:REGEXMATCH精确匹配
通过正则表达式指定精确匹配的目标值:
={"Formula";ArrayFormula( if( REGEXMATCH(B2:B, "^(BRKW|GKW1-2)$"), if( D2:D <= A2:A, D2:D, A2:A ), "abc" ) )}
修正后,仅B列单元格精确等于"BRKW"或"GKW1-2"的行才会执行第一个IF分支,其他行(如B列是"BKW"的行)会返回"abc"。
内容的提问来源于stack exchange,提问作者ah2Bwise
相关产品推荐
相关产品推荐

