INDEX(MATCH()) 函数,我想迭代地测试不同的标准直到一个工作

Posted

技术标签:

【中文标题】INDEX(MATCH()) 函数,我想迭代地测试不同的标准直到一个工作【英文标题】:INDEX(MATCH()) Function where I want to iteratively test different criteria until one works 【发布时间】:2016-08-29 23:45:05 【问题描述】:

我有一个只需要 1 个条件的索引匹配函数,但该单个条件可能有 5 个不同的选项。有没有办法创建迭代遍历条件列表的能力,直到匹配在执行一系列嵌套 if 语句之外起作用?如果可能的话,我也希望避免使用数组公式,因为它会拖慢我的工作簿的速度。

当前使用的概念:

=INDEX(Array 1,IFERROR(MATCH(a,Array 2,0),
               IFERROR(MATCH(b,Array 2,0),
               IFERROR(MATCH(c,Array 2,0),
               IFERROR(MATCH(d,Array 2,0),MATCH(e,Array 2,0))))))

【问题讨论】:

【参考方案1】:

您的公式通过一系列可能的MATCH functions 工作,并返回系列中匹配的第一个。这样一来,您将只获得一次回报或根本没有回报。

如果您将 a、b、c、d 和 e 值放入一个常量数组中,则可能会返回多个匹配项,但最终只能将一个匹配项返回到 INDEX function从 Array_1 返回值。您需要使用 MIN、MAX、SMALL、LARGE 等从零个、一个或多个返回的数组中剔除单个返回。

=INDEX(Array_1, MIN(INDEX(ROW($1:$5)+(Array_2<>"a","b","c","d","e")*1E+99, , )))

【讨论】:

【参考方案2】:

如果我误解了,请纠正我,我认为您正在寻找符合 5 个不同条件的行号?

如果是这样,你可以这样做:

=MATCH(A1 & B1 & C1 & D1 & E1, ArrayA & ArrayB & ArrayC & ArrayD & ArrayE, 0)

这将检查所有 5 个值是否匹配,然后返回行号。然后,您可以索引该值以找到您的匹配项。确保在输入整个公式时使用Ctrl-Shift-Enter 而不是普通的Enter

【讨论】:

这更像是我需要在一个标准中匹配这 5 个选项中的 1 个,而不是实际上有 5 个不同的标准。例如,我知道以下值之一:A、B、C、D 或 E 将在数组 [F、G、H、D、I] 中正确匹配。但我需要单独测试每个值,以查看 D 是否是合适的匹配项。

以上是关于INDEX(MATCH()) 函数,我想迭代地测试不同的标准直到一个工作的主要内容,如果未能解决你的问题,请参考以下文章

查询好搭档:INDEX+MATCH 函数

index函数

[欢课] EXCEL怎样运用VLOOKUP函数,与INDEX-MATCH函数进行查找?

使用 match.call 将所有参数传递给其他函数

在python中一个接一个地将函数列表应用于可迭代

MATCH 和 INDEX 返回索引号 2 Excel