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()) 函数,我想迭代地测试不同的标准直到一个工作的主要内容,如果未能解决你的问题,请参考以下文章