![带索引匹配的 IF/AND 语句](https://linux22.com/image/1584405/%E5%B8%A6%E7%B4%A2%E5%BC%95%E5%8C%B9%E9%85%8D%E7%9A%84%20IF%2FAND%20%E8%AF%AD%E5%8F%A5.png)
因此,我有一个非常长的嵌套 if 语句,最后一个嵌套 IF 是带有索引匹配的 IF/AND 语句。该公式运行良好(至少我认为如此),直到几周后,我需要添加另一个带有索引匹配的 IF/AND 语句。然后整个过程甚至无法运行,因为 Excel 认为我为该函数提供了太多参数。
所以,这个周末我一直在研究这个公式,我开始分析一些部分并意识到这个 IF/AND 语句只是部分起作用。
我的意思是:
(我的公式位于表 1 的优先级列(C 列)中)
如果状态(B 列)显示已批准,我希望我的公式与工作表 2 中的优先级进行索引匹配,除非该单元格为空白 - 然后我希望工作表 1 上的优先级显示“中”。如果工作表 1 上的状态未显示已批准,则我不希望我的公式在该单元格中执行任何操作。
=IF((AND(B2="已批准",INDEX(Sheet2!B:B,MATCH(Sheet1!A2,Sheet2!A:A,0))="")),"中", INDEX(Sheet2!B:B,MATCH(Sheet1!A2,Sheet2!A:A,0)))
将其放入 Sheet1 的 C 列中:
这是第 2 页:
第 10 项运行良好 - 状态为已批准,且工作表 2 上的优先级为空白,因此 C 列显示“中”。
但是,第 20 项和第 25 项的 C 列已进行索引匹配,但实际上不应该进行索引匹配 - 它们的状态为“未批准”,因此应将其留空。
我有几个想法可以解决这个问题,但都没有奏效。一个想法是在最后一个索引匹配中添加一个 AND(B2="Approved"),
=IF((AND(B2="Approved",INDEX(Sheet2!B:B,MATCH(Sheet1!A2,Sheet2!A:A,0))="")),"Medium", (AND(B2="Approved",INDEX(Sheet2!B:B,MATCH(Sheet1!A2,Sheet2!A:A,0)))))
它只返回一堆 TRUE 或 FALSE。
我还尝试在最后一个索引匹配位中添加另一个 IF,但我意识到它不再是一个有凝聚力的 IF 语句。
我该如何更改公式才能使其正常工作?抱歉,答案很明显,因为我对 Excel 还很陌生。
答案1
首先测试是否“已批准”。如果为 false,则返回""
true,然后针对索引执行 if 操作:
=IF(B2="Approved",IF(INDEX(Sheet2!B:B,MATCH(Sheet1!A2,Sheet2!A:A,0))="","Medium", INDEX(Sheet2!B:B,MATCH(Sheet1!A2,Sheet2!A:A,0)),"")