使用 INDEX(MATCH) 根据多个条件查找值

Use INDEX(MATCH) to find value based on multiple criteria

我正在使用 INDEX(MATCH) 查找一列中的值,使用另一列 sheet 中两个不同单元格的条件。这是我尝试使用的公式:

=INDEX(Sheet1!P:P,MATCH(1,(Sheet1!A:A=Sheet2!C)*(Sheet1!B:B=Sheet2!$B2),0))

Sheet1 是数组,P 列包含我希望公式为 return 的值。 Sheet1 中的 A 列包含第一个条件的值,Sheet1 中的 B 列包含第二个条件的值。标准在 Sheet2 的 C1 和 B2 中表示。这将随着单元格的复制而改变。任何人都可以看到这个公式中的任何错误吗?它正在 returning "value is not available for the formula or function."

这必须作为数组公式¹输入,因此完整的列引用应减少到最小大小,否则您将在处理数十万个空白单元格时遇到不必要的计算延迟。

A 列有文字,

=index(Sheet1!$P:index(Sheet1!$P:$P, match("zzz", Sheet1!$A:$A)),
   match(1, (Sheet1!$A:index(Sheet1!$A:$A, match("zzz", Sheet1!$A:$A))=Sheet2!C)*
            (Sheet1!$B:index(Sheet1!$B:$B, match("zzz", Sheet1!$A:$A))=Sheet2!$B2), 0))

A 列中有数字或日期,

=index(Sheet1!$P:index(Sheet1!$P:$P, match(1e99, Sheet1!$A:$A)),
   match(1, (Sheet1!$A:index(Sheet1!$A:$A, match(1e99, Sheet1!$A:$A))=Sheet2!C)*
            (Sheet1!$B:index(Sheet1!$B:$B, match(1e99, Sheet1!$A:$A))=Sheet2!$B2), 0))

您在原始 Sheet1 范围引用中没有绝对引用锚点(例如 $ ),但是您根据 Sheet2 中的标准设置它们的方式让我相信您需要它们用于两行和专栏。

如果第 1 行有第 header 列标签,请将 A1、B1 和 P1 更改为 A2、B2 和 P2。


¹ 数组公式需要用Ctrl+Shift+Enter↵。如果输入正确,Excel 会将公式括在大括号中(例如 {})。您不会自己输入大括号。一旦正确输入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试将 full-column 引用减少到更接近代表实际数据范围的范围。数组公式以对数方式消耗计算周期,因此最好将参考范围缩小到最小值。有关详细信息,请参阅 Guidelines and examples of array formulas