使用多个匹配条件在Excel中查找ROW编号

时间:2015-02-12 21:27:40

标签: excel excel-formula

我需要能够找到行的行号,其中A1的匹配条件等于或大于列C中的值,小于或等于列{{1}中的值}

我可以使用DINDEX组合,但不确定这是否应该用于多个条件匹配。

非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:10)

由于您有多个条件,我不会使用MATCH来获取行号。但是,一旦发现了正确的行号,我仍然会使用INDEX来获取E中行的值。

因此,我将使用包含多个条件的MATCH语句来使用数组公式而不是IF。现在请注意,需要使用ctrl + shift + enter输入数组公式。 IF语句如下所示:

=IF((A1>=C:C)*(A1<=D:D),ROW(A:A),"")

注意:我在这里没有使用AND公式,因为它不能用于数组。但由于布尔值只是Excel中的1或0,所以乘以标准就可以了。

现在这给了我们一个只包含空格和有效行号的数组。这样,如果第5行和第7行都有效,那么数组将如下所示:

{"","","","",5,"",7,"",...}

现在,如果我们用IF封装SMALL语句,我们可以得到我们想要的任何有效行。在这种情况下,因为我们只想要第一个有效的行:

=SMALL(IF((A1>=C:C)*(A1<=D:D),ROW(A:A),""),1)

如果第一个有效行为5,那么将返回5.增加K公式的SMALL值将允许您获取第2,第3等有效行。

现在当然,因为我们有一个行号,一个简单的INDEX将获得E列中的值:

=INDEX(E:E,SMALL(IF((A1>=C:C)*(A1<=D:D),ROW(A:A),""),1))

答案 1 :(得分:0)

如果您需要匹配多个列值来检索行号,即如果两列或更多列一起创建一个唯一 ID,您可以使用 MATCH 的数组公式,如下所示:

MATCH(1,(A:A=J1)*(B:B=K1)*(C:C=L1),0)

其中A、B、C包含要匹配的列数组,分别检索J1、K1、L1中值对应的唯一行号。

有关分步指南,Christian Pedersen's Explainer