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

Excel 使用INDEX-MATCH在两列中查找值并返回第三个值,excel,excel-formula,Excel,Excel Formula,我正在创建一个排序矩阵,其中a列有一个零件列表,第1行以yyyy/mm格式填充一年中的周数。我试图用汇总表中的数量数据填充此矩阵,其中每个零件的需求量按年度的周列出。在此汇总表中,A列列出了零件,B列列出了周,C列列出了数量 我一直在尝试编写一个=INDEX(MATCH(),MATCH())类型的公式,以便在A列和B列中的值分别与矩阵表上A列和第1行中的值匹配时获取C列的值,但只得到了#REF错误作为回报。在这一点上,我需要第二双眼睛。以下是公式: =索引(MRP!$C$1:$C$6400,匹配

我正在创建一个排序矩阵,其中a列有一个零件列表,第1行以yyyy/mm格式填充一年中的周数。我试图用汇总表中的数量数据填充此矩阵,其中每个零件的需求量按年度的周列出。在此汇总表中,A列列出了零件,B列列出了周,C列列出了数量

我一直在尝试编写一个
=INDEX(MATCH(),MATCH())
类型的公式,以便在A列和B列中的值分别与矩阵表上A列和第1行中的值匹配时获取C列的值,但只得到了#REF错误作为回报。在这一点上,我需要第二双眼睛。以下是公式:

=索引(MRP!$C$1:$C$6400,匹配(A2,MRP!$A$2:$A$6400,0),匹配(B1,MRP!$B$2:$B$6400,0))

我这样做是正确的,还是需要另一种方法来代替?

您得到了
#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)
    获取行号。也许应该是
    匹配(A1…)
  • MATCH(B1,MRP!$B$2:$B$6400,0)
    获取列号
但是,由于匹配数组只有一列,因此match函数中的列数大于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
。这将获得列A和列B与单元格
A1
B1
匹配的行号

最后,您可以为其编制索引

=INDEX(MRP!$C$1:$C$6400,Result from above match,0)
您将收到
#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)
    获取行号。也许应该是
    匹配(A1…)
  • MATCH(B1,MRP!$B$2:$B$6400,0)
    获取列号
但是,由于匹配数组只有一列,因此match函数中的列数大于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
。这将获得列A和列B与单元格
A1
B1
匹配的行号

最后,您可以为其编制索引

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

我会用SUMIFS。在第二张工作表中创建一个月号为的帮助器列,然后使用

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

我会用SUMIFS。在第二张工作表中创建一个月号为的帮助器列,然后使用

=SUMIFS(sheet2!column C, sheet 2!helper column, month(sheet1!A$1),sheet2! column A, sheet1!$A1)
B2单元 =SUMIFS(MRP!$C:$C,MRP!$A:$A,表1!$A3,MRP!$B:$B,表1!B$1)

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

单元格B2 =SUMIFS(MRP!$C:$C,MRP!$A:$A,表1!$A3,MRP!$B:$B,表1!B$1)


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

这感觉很接近,尽管在您建议的公式的第一步中,我仍然遇到了一个
\NA
错误(即使在使用
Ctrl+Shift+Enter提交后也是如此)。将公式分解为索引(MATCH())
,我得到如下结果:
=INDEX(MRP!C2:C6400,MATCH(A2,MRP!A2:A6400,0))
返回该零件列出的第一个数量值<代码>=索引(MRP!C2:C6400,匹配(B1,MRP!B2:B6400,0))返回该yyyy/ww日期列出的第一个数量值。最终目标是优化搜索,以便在特定的yyyy/ww日期获得该零件的具体数量。请尝试这一行
=匹配(A1&B1,MRP!$A$2:$A$6400&MRP!$B$2:$B$6400,0)
。这意味着要得到你想要的东西,这一行符合这两个标准。我仍然得到一个
#值
错误(使用
Ctrl+Shift+Enter
)。
=索引(MRP!$C$1:$C$6400,匹配(A1&B1,MRP!$a$2:$a$6400&MRP!$B$2:$B$6400,0)
你就是这么做的吗?在执行
Ctrl+Shift+Enter
之后,是否看到此代码周围的
{}
?确保您的数据已经存在于这些列中。这感觉很接近,尽管我仍然在您建议的公式的第一步中遇到了一个
#NA
错误(即使在使用
Ctrl+Shift+Enter
提交之后)。将公式分解为索引(MATCH())
,我得到如下结果:
=INDEX(MRP!C2:C6400,MATCH(A2,MRP!A2:A6400,0))
返回该零件列出的第一个数量值<代码>=索引(MRP!C2:C6400,匹配(B1,MRP!B2:B6400,0))
返回该yyyy/ww日期列出的第一个数量值。最终目标是优化搜索,以便在特定的yyyy/ww日期获得该零件的具体数量。请尝试这一行
=匹配(A1&B1,MRP!$A$2:$A$6400&MRP!$B$2:$B$6400,0)
。这意味着要得到你想要的东西,这一行符合这两个标准。我仍然得到一个
#值
错误(使用
Ctrl+Shift+Enter
)。
=索引(MRP!$C$1:$C$6400,匹配(A1&B1,MRP!$a$2:$a$6400&MRP!$B$2:$B$6400,0)
你就是这么做的吗?在执行
Ctrl+Shift+Enter
之后,是否看到此代码周围的
{}
?确保这些列中已经存在您的数据。