ARRAYFORMULA函数多条件判断失效求助:设H/J列真值后公式停止工作
解决ARRAYFORMULA搭配AND函数无法逐行判断的问题
你的问题出在ARRAYFORMULA()中使用了AND()函数——AND()是聚合函数,会对整个输入数组返回单一的布尔值,而非逐行生成判断结果。只要数组里有一个单元格满足条件,AND()就会返回TRUE,反之返回FALSE,这就导致公式无法按你预期的逐行计算。
修正后的公式(用*替换AND实现逐行逻辑与)
=ARRAYFORMULA( IF( (J5:J17=TRUE)*(H5:H17=FALSE), E5:E17*F5:F17*1.075, IF( (J5:J17=TRUE)*(H5:H17=TRUE), 0, IF( (J5:J17=FALSE)*(H5:H17=FALSE), E5:E17*F5:F17, IF( (J5:J17=FALSE)*(H5:H17=TRUE), 0, "" ) ) ) ) )
更简洁的IFS版本
用IFS()替代多层嵌套IF,逻辑更清晰:
=ARRAYFORMULA( IFS( (J5:J17=TRUE)*(H5:H17=FALSE), E5:E17*F5:F17*1.075, (J5:J17=TRUE)*(H5:H17=TRUE), 0, (J5:J17=FALSE)*(H5:H17=FALSE), E5:E17*F5:F17, (J5:J17=FALSE)*(H5:H17=TRUE), 0, TRUE, "" ) )
关键说明
在数组公式中,逐行的逻辑与判断要用*运算符:
- TRUE会被解析为1,FALSE为0
- 两个条件相乘时,只有当两者都为1(即都满足),结果才为1(TRUE),否则为0(FALSE)
另外你提到了I列,但原公式未涉及I列的判断,如果需要加入I列条件,只需在对应逻辑中追加*(I5:I17=XXX)即可。比如要判断I列也为FALSE,第一个条件可改为(J5:J17=TRUE)*(H5:H17=FALSE)*(I5:I17=FALSE)。
内容的提问来源于stack exchange,提问作者horsefish
相关产品推荐
相关产品推荐

