【问题标题】:Find the ROW number in excel with multiple matching criteria在具有多个匹配条件的excel中查找行号
【发布时间】:2021-06-06 18:59:25
【问题描述】:

我需要能够找到来自A1 的匹配条件等于或大于列C 中的值且小于或等于列D 中的值的行的行号

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

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

【问题讨论】:

  • 如果找到多个有效组合会怎样?
  • 基本上,我将使用行号从E列获取值
  • 所以它应该只返回第一个有效行?

标签: excel excel-formula


【解决方案1】:

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

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

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

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

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

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

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

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

如果第一个有效行是 5,那么它将返回 5。增加 SMALL 公式的 K 值将允许您获取第二、第三等有效行。

当然,既然我们有行号,一个简单的INDEX 将得到 E 列中的值:

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

【讨论】:

  • 太棒了。并且使用 LARGE() 可以找到符合条件的最后一行。
  • @chancea 有什么理由使用SMALL(exp,1) 而不是MIN(exp) 吗?
  • @PatrickHonorez 这完全取决于您的开发需求。如果你从不改变它,那么 SMALL(exp,1)MIN(exp) 是一样的
【解决方案2】:

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

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

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

如需分步指南,Christian Pedersen's Explainer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多