如何在Excel中使用与IF匹配的索引?
表格1
ABCD 1 Seq Item Re-Order Qty On-hand Qty 2 1 X 10 15 3 2 Y 10 5 4 3 Z 10 10
其他工作表:表2
预期产出:
ABC 1 Seq Item Re-Order Qty 2 1 N/AN/A 3 2 Y 10 4 3 N/AN/A
在表2中,我需要像这样写入第2列公式:
Index(Table1[Item],Match(table2[Seq],tabel1[Seq],0) WHERE table1[reorder qty] > table1[On-hand Qty]
我不确定如何pipe理这样的要求?
这可以做到。 它需要使用表2中的数组公式。
通常使用INDEX
,只需使用一系列单元格作为array
(公式的第一个参数)。 在这种情况下,我们将根据条件(您的WHERE
子句)的结果给它一个新的array
返回。
我将从结果的图片开始,然后给出公式。 对我来说, Table1
在左边, Table2
在右边。
公式
公式非常相似,主要的区别是在IF
部分返回哪个列,它为INDEX
生成array
。 IF
的条件部分对于所有列是相同的。 请注意,在这里使用表格确实有助于复制公式,因为范围不能在我们的下面改变。
这些都是数组公式,需要用CTRL + SHIFT + ENTERinput。
Table2[Item]
=INDEX(IF(Table1[Re-Order Qty]>Table1[On-hand Qty],Table1[Item],"N/A"), MATCH([@Seq],Table1[Seq],0))
Table2[Re-Order Qty]
=INDEX(IF(Table1[Re-Order Qty]>Table1[On-hand Qty],Table1[Re-Order Qty],"N/A"), MATCH([@Seq],Table1[Seq],0))
Table2[On-hand Qty]
=INDEX(IF(Table1[Re-Order Qty]>Table1[On-hand Qty],Table1[On-hand Qty],"N/A"), MATCH([@Seq],Table1[Seq],0))
这些公式背后的主要思想是:
- 基于条件返回一个新的数组。 这个新的数组将返回所需的列(
Item
,Re-order
,…),如果条件为FALSE
,它将返回N/A
这需要数组公式,因为它在IF
逐行进行。 - 获得行号的公式的
MATCH
部分是“标准”。 我们只是在Table1
寻找Seq
编号。 这决定了要返回的新array
哪一行。