我想在 ARRAYFORMULA 中使用以下公式:
=IF(IFERROR(OR(VLOOKUP($A2, DATA!$A$2:D, 3, FALSE), VLOOKUP($A2, DATA!$A$2:D, 4, FALSE)), FALSE), "SENT", IF(IFERROR(NOT(ISNA(VLOOKUP($A2, REJECTED!$A$2:A, 1, FALSE))), FALSE), "REJECTED", ""))
使用此公式并将其向下拖动效果非常好;所有值都正确评估。
但是,当我进行必要的更改以将其与 ARRAYFORMULA 一起使用时,第一个 if 条件的行为有所不同。
第一行 A2 的评估从 TRUE 切换到 FALSE。
这可能是什么原因?
我创建了一个测试表来复制我遇到的问题:
https://docs.google.com/spreadsheets/d/1MuBstN9tqVccSExTnI7GOQxfu9OK-nqgyoTHq_pJqYE/edit?usp=sharing
感谢我能得到的任何帮助!
您可以使用 BYROW 或 MAP 来扫描您的整个范围:
=BYROW(A2:A,LAMBDA(each,IF(each="","",IF(IFERROR(OR(VLOOKUP(each, DATA!$A$2:D, 3, FALSE), VLOOKUP(each, DATA!$A$2:D, 4, FALSE)), FALSE), "SENT", IF(IFERROR(NOT(ISNA(VLOOKUP(each, REJECTED!$A$2:A, 1, FALSE))), FALSE), "REJECTED", "")))))
尝试:
=ArrayFormula(IF(IFERROR(IF((VLOOKUP($A2:A, DATA!$A$2:D, 3, FALSE)+ VLOOKUP($A2:A, DATA!$A$2:D, 4, FALSE)=1),"TRUE","FALSE"), FALSE), "SENT", IF(IFERROR(NOT(ISNA(VLOOKUP($A2:A, REJECTED!$A$2:A, 1, FALSE))), FALSE), "REJECTED", "")))
您的公式不起作用的原因是因为将
OR
与 arrayformula
一起使用具有不同的行为。您可以将其替换为“+
”,这将返回1 or 0.
然后使用IF
条件使其返回TRUE如果1,FALSE如果0。区别见下图:
来自:
OR(VLOOKUP($A2:A, DATA!$A$2:D, 3, FALSE), VLOOKUP($A2:A, DATA!$A$2:D, 4, FALSE))
收件人:
IF((VLOOKUP($A2:A, DATA!$A$2:D, 3, FALSE)+ VLOOKUP($A2:A, DATA!$A$2:D, 4, FALSE)=1),"TRUE","FALSE")
您也可以参考我找到的这个参考视频了解更多详情: 如何在 Google 表格上使用 AND / OR 和 ARRAYFORMULA? |表黑客