使用INDEX-MATCH在两列中查找值并返回第三个值

时间:2016-08-25 13:22:37

标签: excel excel-formula

我正在创建一个排序矩阵,其中列A包含部件列表,第1行以yyyy / mm格式填充一年中的周数。我想要做的是使用聚合工作表中的数量数据填充此矩阵,其中每个部分的需求数量按年份列出。在此汇总工作表中,A列列出了部件,B列列出了周数,C列列出了数量。

如果来自A列和A列的值,我一直在尝试编写=INDEX(MATCH(),MATCH())类型的公式,以便获取C列的值。 B在矩阵表上分别匹配A列和第1行中的值,但仅返回#REF错误。此时我需要第二双眼睛。这是公式:

=INDEX(MRP!$C$1:$C$6400,MATCH(A2,MRP!$A$2:$A$6400,0),MATCH(B1,MRP!$B$2:$B$6400,0))

我是以正确的方式解决这个问题,还是需要另一种方法呢?

3 个答案:

答案 0 :(得分:1)

您收到#REF错误,因为您超出了您要匹配的阵列的范围。 index函数有两个参数和一个可选参数。

INDEX(array, row_num, [column_num])

看看你的公式,

=INDEX(MRP!$C$1:$C$6400,MATCH(A2,MRP!$A$2:$A$6400,0),MATCH(B1,MRP!$B$2:$B$6400,0))
  • MRP!$C$1:$C$6400是要匹配的数组
  • MATCH(A2,MRP!$A$2:$A$6400,0)获取行号。也许它应该是MATCH(A1....)
  • MATCH(B1,MRP!$B$2:$B$6400,0)获取列号。

但是由于匹配的数组只有一列,因此匹配函数的列号大于1,这超出了数组的范围。

如果您需要匹配A列和B列中的两个值,则可以使用此公式匹配

=MATCH(lookup_value_1 & lookup_value_2, lookup_array_1 & lookup_array_2, match_type)

对于你的情况,它将是

=MATCH(A1 & B1, MRP!$A$2:$A$6400 & MRP!$B$2:$B$6400, 0)

您需要使用Ctrl+Shift+Enter提交公式,而不是仅按Enter。这将为您提供行号,其中col A和B都与单元格A1B1匹配。

最后,你可以将其编入索引

=INDEX(MRP!$C$1:$C$6400,Result from above match,0)

答案 1 :(得分:1)

细胞B2     = SUMIFS(MRP $ C:!$ C,MRP $ A:$ A,工作表Sheet $ A3,MRP $ B:!!$ B,Sheet 1中B $ 1)

然后,您可以向下和向下复制这些内容。

答案 2 :(得分:0)

我会使用SUMIFS。在第二个工作表中创建一个辅助列,其中包含月份编号,然后使用

=SUMIFS(sheet2!column C, sheet 2!helper column, month(sheet1!A$1),sheet2! column A, sheet1!$A1)