起初:您误解了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。