【问题标题】:Multiple arrays within multiple arrays多个数组中的多个数组
【发布时间】:2015-10-28 18:33:57
【问题描述】:

我有多个查找值,我试图在多个数组中进行匹配。我想在同一匹配中的多个数组中匹配其中一个查找值,但我不断收到“#VALUE”或“#N/A”。 为了便于阅读,我尝试使用的当前公式在下面进行了简化。

=INDEX($I$2:$I$10,MATCH(A2&B2&C2,$D$2:$D$10&OR($E$2:$E$10,$F$2:$F$10)&$G$2:$G$10,0))

在这种情况下,我尝试在$E$2:$E$10$F$2:$F$10 中匹配B2。我做错了什么?

提前致谢!

【问题讨论】:

    标签: excel-formula match


    【解决方案1】:

    起初:您误解了OR 函数。 OR 需要布尔值作为参数。它不会返回值数组,甚至不会返回布尔值。它将返回 TRUE 或 FALSE。

    第二点:即使OR 可以按照您的想法工作,MATCH 也需要一维查找数组、行向量或列向量。它不适用于像{$D$2&$E$2&$G$2 , $D$2&$F$2&$G$2 ; $D$3&$E$3&$G$3 , $D$3&$F$3&$G$3 ; ...}这样的二维矩阵

    您的示例最简单的解决方案是每个可能的lookup_array 有一个INDEX MATCH 组合:

    {=IFERROR(INDEX($I$2:$I$10,MATCH(A2&B2&C2,$D$2:$D$10&$E$2:$E$10&$G$2:$G$10,0)),INDEX($I$2:$I$10,MATCH(A2&B2&C2,$D$2:$D$10&$F$2:$F$10&$G$2:$G$10,0)))}
    

    或者,如果您确实需要这种方式,您似乎认为您的公式应该起作用,那么您不能使用 MATCH 并且需要以其他方式计算行号。比如像这样:

    {=INDEX($I$2:$I$10,MIN(IF(A2&B2&C2=$D$2:$D$10&T(OFFSET($E$2,ROW($2:$10)-2,{0,1}))&$G$2:$G$10,ROW($2:$10)-1,ROWS($D$2:$D$10)+1)))}
    

    假设A2:G10 中的值是文本值,则使用T。如果它们是数字,则必须使用N

    【讨论】:

    • 谢谢阿克塞尔。我明白为什么“OR”在这种格式下不起作用。另外,我已经尝试了您的第一个建议,并且可以顺利运行。我也试试第二个,看看。再次感谢。
    猜你喜欢
    • 2016-02-13
    • 2015-12-07
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多