Excel 使用索引和匹配在表数组中进行两列查找

Excel 使用索引和匹配在表数组中进行两列查找,excel,excel-formula,excel-match,Excel,Excel Formula,Excel Match,我希望excel使用INDEX和MATCH显示表数组中的值,该表数组有两个匹配的单元格com\u cd和div\u cd 我试过下面的公式,但不起作用 =INDEX(K9:K53,MATCH(K3,I9:I53,0),MATCH(K4,J9:J53,0)) 下面是excel工作表的屏幕截图,根据com\u cd和div\u cd 尝试数组公式(CTRL+SHIFT+ENTER)而不是ENTER =INDEX(K9:K53,MATCH(K3&K4,I9:I53&J9:J53,0

我希望excel使用
INDEX
MATCH
显示表数组中的值,该表数组有两个匹配的单元格
com\u cd
div\u cd

我试过下面的公式,但不起作用

=INDEX(K9:K53,MATCH(K3,I9:I53,0),MATCH(K4,J9:J53,0)) 
下面是excel工作表的屏幕截图,根据
com\u cd
div\u cd


尝试数组公式
(CTRL+SHIFT+ENTER)
而不是
ENTER

=INDEX(K9:K53,MATCH(K3&K4,I9:I53&J9:J53,0),1)
未经测试,但应能正常工作

稍后将进行编辑,解释我们的公式以及公式不起作用的原因。

上的列\u num参数无法提供第二行标准。您需要一种方法来确保row_num参数上的两列匹配,并将列_num保留为空或为1(在
K9:K53
中只有列)

K5的标准公式应为

=index(K9:K53, aggregate(15, 6, row(1:45)/((i9:i53=k3)*(j9:j53=k4)), 1))
。。。或者

=index(K9:K53, min(index(row(1:45)+((i9:i53<>k3)+(j9:j53<>k4))*1e99, , )))
=索引(K9:K53,min(索引(行(1:45)+(i9:i53k3)+(j9:j53k4))*1e99,)
单元格范围K9:K53共有45行。K9:K53内的位置将在
行(1:45)
内。第一个公式强制任何不匹配的行进入
#DIV/0错误状态,并使用选项6在使用检索最小有效条目时忽略错误(例如15)。第二个公式执行相同的操作,将1E+99(1后跟99个零)添加到任何不匹配的行中,并使用



⑨Excel 2010中引入了。早期版本中不提供该公式。

谢谢,现在可以使用了。当然,请稍后解释您的公式。按照目前的情况,如果引用的行数发生变化(这是一种不太可能的情况),则OP必须重新确定部分行(1:45)的大小。如果将K:K传递给INDEX,而不是K9:K53,那么行部分就是ROW(K9:K53)。一般来说,如果范围为Range1,则行部分为ROW(Range1),因此在这两者之间提供了简单而恒定的关系,如果Range1发生变化,则无需进一步考虑或手动修改。