Excel中带有多个匹配的INDEX-MATCH(6个例子)

  • Share This
Hugh West

Excel提供了不同的函数和方式来获取匹配的值。 根据不同的情况,用户可以选择自己的偏好。 本教程将向你展示如何使用以下方法获得结果 指数匹配 与Excel中的多个匹配。

首先,让我们了解一下今天的工作手册。

在今天的工作簿中,你会发现产品和它们的价格关系。 利用这种关系,我们将看到几个例子来获取价值,包括 多重标准 .

在现实世界中,你可能需要处理几个关系的数据集,并设置不同的标准来产生结果。 为了暂时保持简单,我们将检索与名称和尺寸相匹配的产品的价格。

下载实践工作手册

你可以从下面的链接中下载用于演示的工作簿和所有公式。

多重匹配的INDEX-MATCH.xlsx

INDEX-MATCH的基础知识

INDEX函数的基础知识

INDEX函数 返回一个值或对一个表或范围内的值的引用。 它可以用来检索单个值,或任何整个行和列。 让我们看看INDEX函数的语法。

INDEX(array/reference, row_number, column_number,area_number)

阵列或引用。 要查看的单元格或单元格范围

行数。 阵列中的一行,从中返回一个值

列数。 数组中要返回值的那一列

面积_编号。 选择一个参考范围,从该范围内返回以下数据的交集 行数_num 列_num 这是一个可选字段。

在编写公式时,你可以选择是否提供 行数 列数 如果你提供 行数 那么就可以选择使用 列数 反之亦然。

你可以查看一下 微软支持 网站上有更深入的语法分解。

MATCH函数的基础知识

实际上,你会发现有一个功能更经常地与 索引 功能是 MATCH函数 ...... 匹配 函数用于定位指定项目在单元格区域中的位置,它返回特定项目在该区域中的相对位置。

的语法。 匹配 功能是

MATCH(lookup_value, lookup_array, match_type)

lookup_value: 要在lookup_array中搜索的值。

lookup_array: 被搜索的单元格的范围。

match_type。 这是一个可选的字段。 你可以插入3个值。

1 = 小于或等于lookup_value

0 = 确切的查询值

-1 = 大于或等于lookup_value

如果想更深入地了解,你可以查看一下 微软支持 现场。

6 使用INDEX-MATCH公式的合适例子,有多个匹配项

现在我们将把这些公式和理论在我们的数据集中付诸实施。 我们已经解决了不同的场景,使用了 INDEX-MATCH 请跟随我们的脚步,看看我们如何在不同的情况下应用它们,或者如果你喜欢特定的一个,你可以在上面的表格中找到它。

1.具有多个标准的INDEX-MATCH

对于取值,用 多重标准 例如,如果你想检索一件小尺寸衬衫的价格(在我们的工作簿中),你需要设置产品名称 - 衬衫和尺寸 - 小号。

现在,请按照以下步骤,看看我们如何在Excel中使用公式来寻找与这些多个匹配的索引匹配。

步骤。

  • 首先,选择单元格 G6 .
  • 然后写下以下公式。

=INDEX(D5:D15,MATCH(1,(G4=B5:B15)*(G5=C5:C15),0))

🔎 公式分解

INDEX(D5:D15,MATCH(1,(G4=B5:B15)*(G5=C5:C15),0))

👉 (G4=B5:B15) (G5=C5:C15) 都是条件,并返回要么 为真 失败 从数字上看,它们是1或0。 因此,当它们都是真的时候,乘法返回1。

👉 MATCH(1,(G4=B5:B15)*(G5=C5:C15),0) 返回两个条件都是真的位置。 在本例中,它是1。

👉 INDEX(D5:D15,MATCH(1,(G4=B5:B15)*(G5=C5:C15),0)) 返回公式前一部分返回的位置上的值。

  • 最后,按 进入 .

这就是我们如何在Excel中使用INDEX MATCH进行多条件或匹配。

阅读更多。 如何在Excel中从不同的数组中匹配多个标准

2.具有多个标准的INDEX-MATCH属于行和列

在本节中,我们将讨论如何通过测试两个或更多的标准来执行查找,在 行和列 这可能看起来有点棘手和复杂。

在我们的例子中,我们带来了一点变化,我们的表格现在是这样安排的:尺寸值(小号、大号、中号、大号)代表单独的列。

与上一节类似,将产品和所需尺寸设为标准值。

按照这些步骤,我们可以看到如何使用本节的公式。

步骤。

  • 首先,选择单元格 I6 .
  • 然后在其中写下以下公式。

=index(c5:f7,match(i4,b5:b7,0), match(i5,c4:f4,0))

🔎 公式分解

👉 match(i4,b5:b7,0) 的值的精确匹配,返回 I4 在范围内 B5:B7 .

👉 同样地。 match(i5,c4:f4,0) 的值的精确匹配,返回 I5 在范围内 C4:F4 .

👉 最后。 index(c5:f7,match(i4,b5:b7,0), match(i5,c4:f4,0)) 将第一个函数的输出作为行号,将第二个函数的输出作为列号,并返回在该范围内的值。 C5:F7 .

  • 之后,按 进入 .

因此,我们可以用 INDEX-MATCH 具有属于行和列的多个标准。

阅读更多。 Excel索引 匹配单个/多个标准与单个/多个结果

类似读物

  • 在Excel中用3个标准进行索引匹配(4个例子)。
  • 在Excel中跨多个工作表的索引匹配(有备选方案)。
  • 在Excel的多个标准下用INDEX-MATCH函数求和
  • 在Excel中对多条行进行索引匹配求和(3种方法)
  • 在Excel中寻找最小值的INDEX-MATCH公式(4种合适的方法)

3.非相邻列的INDEX-MATCH

在本节中,我们将向你展示一个如何使用两个不相邻的列来获取匹配值的例子。 此外,我们需要 IFERROR函数 对于这种情况。

这将是用于演示的数据集。

按照这些步骤,我们可以看到如何使用 INDEX-MATCH 为该数据集中的非相邻列(产品和金额)。

步骤。

  • 首先,选择单元格 G6 .
  • 然后在其中写下以下公式。

=IFERROR(INDEX(B4:D7,MATCH(G5,B4:B7,0),MATCH(F6,B4:D4,0)), "No Value")

🔎 公式分解

IFERROR(INDEX(B4:D7,MATCH(G5,B4:B7,0),MATCH(F6,B4:D4,0)), "No Value")

👉 match(g5,b4:b7,0) 找到与单元格的值完全匹配的 G5 在范围内 B4:B7 .

👉 match(f6,b4:d4,0) 找到完全匹配的 F6 是范围 B4:D4 .

👉 那么 index(b4:d7,match(g5,b4:b7,0),match(f6,b4:d4,0)) 将第一个函数值作为行号,将第二个函数值作为列号,并返回该位置上的值。 B4:D7 .

👉 最后。 IFERROR(INDEX(B4:D7,MATCH(G5,B4:B7,0),MATCH(F6,B4:D4,0)), "No Value") 如果在执行公式时出现错误,则返回字符串 "No Value"。 否则,它返回通常的值。

  • 接下来,按 进入 在你的键盘上。

因此,我们可以在Excel中使用INDEX-MATCH从非相邻的列中找到所需的匹配条件,甚至是多个条件。

4.多表的INDEX-MATCH

为了从多个表中找到匹配的数据,我们可以使用 INDEX-MATCH 除了这个函数之外,我们还需要 小型 , 身份证号码 , ROW , COUNTIF ,以及 误差(IFERROR 也有一些功能。

在示例表中,我们有2个商店的产品。 使用该表,我们将看到如何做这个任务。

按照这些步骤,我们可以看到如何在Excel中使用这些函数与INDEX-MATCH的组合,与这组表格中的多个匹配。

步骤。

  • 首先,选择单元格 C14 .
  • 现在写下以下公式。

=iferror(index($c$6:$c$10, small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), ""), rows($a$1:a1)) ), index($f$6:$f$10, small(if(isnumber(match($e$6:$e$10, $c$12, 0)) , match(row($e$6:$e$10) , row($e$6:$e$10) ) ," ", rows($a$1:a1) -counttif($b$6:$b$10, $c$12 ))))

🔎 公式分解

iferror(index($c$6:$c$10, small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), ""), rows($a$1:a1)) ),index($f$6:$f$10, small(if(isnumber(match($e$6:$e$10, $c$12, 0)) , match(row($e$6:$e$10) , row($e$6:$e$10) )," ") ,rows($a$1:a1)-counttif($b$6:$b$10, $c$12 ))))

👉 match($b$6:$b$10, $c$12, 0) 找到完全匹配的 C12 在范围内 B6:B10 .

👉 isnumber(match($b$6:$b$10, $c$12, 0)) 检查该值是否是函数中的数字。

👉 if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), " ") ROW($B$6:$B$10))检查前面的函数是否是一个数字。 如果是,那么它返回的输出值是 match(row($b$6:$b$10), row($b$6:$b$10)) 这是在第一和第二中匹配行号阵列的位置 ROW 否则,它将返回一个空字符串。

👉 small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), "") , rows($a$1:a1)) 返回的是 ROWS($A$1:A1) -阵列中的第1个最小值。

👉 最后。 index($c$6:$c$10, small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), " "), rows($a$1:a1)) 返回范围内该位置的值 C6:C10 .

👉 index($f$6:$f$10, small(if(isnumber(match($e$6:$e$10, $c$12, 0)), match(row($e$6:$e$10), row($e$6:$e$10)), ""), rows($a$1:a1)-countif($b$6:$b$10, $c$12) ) 做了同样的事情,但是从第二个表格开始,因为公式的这一部分的范围明显不同。

👉 最后,整个函数采取整个函数并返回 INDEX-MATCH 组合的影响。 误差(IFERROR 如果在执行公式时出现错误,则不会返回任何值。

  • 然后按 进入 .

  • 之后,再次选择单元格,点击并向下拖动多个单元格的填充柄图标,从表格中找到其余的数值。 你可以拖动额外的单元格,当没有多余的数值时,Excel会停止这些数值。

这就是我们如何利用Excel中多个表的标准来使用INDEX-MATCH。

阅读更多。 在Excel中使用INDEX、MATCH和COUNTIF函数的多重标准

5.从多个工作表进行INDEX-MATCH

我们可以在不同的工作表中使用INDEX-MATCH公式。 在这里,我们在两个不同的工作表中有这两个表。

1号车间的1号工作表和2号车间的2号工作表。

为了产生结果,我们需要做的只是在单元格参考前提供工作表的名称。 请按照这些步骤了解更多细节。

步骤。

  • 首先,选择单元格 C14 从 "商店1 "工作表中选择。
  • 然后写下以下公式。

=IFERROR(INDEX($C$6:$C$10, SMALL(IF(ISNUMBER(MATCH($B$6:$B$10, $C$12, 0)), MATCH(ROW($B$6:$B$10), ROW($B$6:$B$10)), ""), ROWS($A$1:A1))), INDEX('Shop 2'!$C$6:$C$10, SMALL(IF(ISNUMBER(MATCH('Shop 2'!$B$6:$B$10, $C$12, 0)), MATCH(ROW('Shop 2'!$B$6:$B$10), ROW('Shop 2'!$B$6:$B$10)), ""), ROWS($A$1:A1)-COUNTIF($B$6:$B$10, $C$12))))

🔎 公式分解

IFERROR(INDEX($C$6:$C$10, SMALL(IF(ISNUMBER(MATCH($B$6:$B$10, $C$12, 0)), MATCH(ROW($B$6:$B$10), ROW($B$6:$B$10)), “”), ROWS($A$1:A1))), INDEX(‘Shop 2’!$C$6:$C$10, SMALL(IF(ISNUMBER(MATCH(‘Shop 2’!$B$6:$B$10, $C$12, 0)), MATCH(ROW(‘Shop 2’!$B$6:$B$10), ROW(‘Shop 2’!$B$6:$B$10)), “”), ROWS($A$1:A1)-COUNTIF($B$6:$B$10, $C$12))))

👉 match($b$6:$b$10, $c$12, 0) 搜索与单元格的值完全匹配的 C12 在范围内 B6:B10 .

👉 isnumber(match($b$6:$b$10, $c$12, 0)) 检查前一个函数的输出是否为数字,从而确定是否有匹配。 这只是将数字值转换成布尔值。

👉 那么 if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), " ") 检查布尔值并返回 match(row($b$6:$b$10), row($b$6:$b$10)) 如果该值为真,则返回一个空字符串。 match(row($b$6:$b$10), row($b$6:$b$10)) 部分是一系列的数字,其中 行($b$6:$b$10) 行($b$6:$b$10) 匹配。 这只是一个方便的技巧,用来限制所选部分的总行数。

👉 在这之后。 small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10) ), ""), rows($a$1:a1) 寻找 ROWS($A$1:A1) 的输出中的第-个最小值。 基金会 部分。

👉 最后。 index($c$6:$c$10, small(if(isnumber(match($b$6:$b$10, $c$12, 0)), match(row($b$6:$b$10), row($b$6:$b$10)), " "), rows($a$1:a1)) 将前一个函数的输出作为行号,而 ROWS($A$1:A1) 作为列号,并返回在这个位置上的值,范围是 C6:C10 .

👉 同样地。 INDEX('Shop 2'!$C$6:$C$10, SMALL(IF(ISNUMBER(MATCH('Shop 2'!$B$6:$B$10, $C$12, 0)), MATCH(ROW('Shop 2'!$B$6:$B$10),ROW('Shop 2'!) 由于工作表的名称是 "商店2",我们在选择范围/单元格之前添加了它。 你不需要将它们添加到你正在进行计算的工作表中。 所以我们在公式的前一部分没有对 "商店1 "进行这样的处理。

👉 最后,我们将整个函数添加到一个 误差(IFERROR 原因是为了在执行公式时发生错误时返回一个空白。

  • 最后,按 进入 .

  • 现在,再次选择单元格。 然后点击并向下拖动一些单元格的填充柄图标(超过输出单元格的估计量就可以了)。

因此,我们将使用INDEX-MATCH从Excel的多个工作表中找到所有的匹配。

6.无阵列的多个标准的INDEX-MATCH

我们也可以使用INDEX-MATCH来进行多个匹配或没有任何数组的标准。 例如,让我们采取以下数据集。

但我们首先需要一个辅助列来实现这一目标。 我们将使用 CONCATENATE函数 除了有关的功能外,请遵循这些步骤,以获得完整的指南。

步骤。

  • 首先,选择单元格 F5 并写下以下公式。

=concatenate(c5,",",d5,"," e5)

  • 然后按 进入 .

  • 现在再次选择该单元格,点击并拖动填充柄图标到列的末端,为其余单元格复制公式。

  • 接下来,我们将找到原始数据集中所有100的INDEX-MATCH。 为此,选择一个单元格来存储该值( H5 在这种情况下)。
  • 然后插入以下公式。

=INDEX(B5:B19,MATCH("100,100,100",F5:F19,0))

🔎 公式分解

👉 MATCH(“100,100,100”,F5:F19,0) 搜索完全匹配的 100,100,100 在范围内 F5:F19 .

👉然后 INDEX(B5:B19,MATCH(“100,100,100”,F5:F19,0)) 返回值匹配的位置上的值。

  • 最后,按 进入 .

这样,我们就可以在Excel中使用INDEX-MATCH进行多个标准或匹配,而不需要任何数组。

如何在Excel中使用INDEX-MATCH公式垂直地返回多个数值

如果你想使用INDEX-MATCH垂直地返回多个值,让我们看看下面的例子。

按照这些步骤,看看我们如何为数据集实现这一目标。

步骤。

  • 首先,选择单元格 F5 .
  • 第二,写下以下公式。

=iferror(index($c$5:$c$14,small(if($e$5=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1), row(1:1)),""

🔎 公式分解

👉 行($b$5:$b$14) 返回一个包含范围内行数的数组 B5:B14 .

👉 行($b$5:$b$14)-行($b$5)+1 返回数组与单元格行号的差值 B5 在这种情况下,它只是一个1到10的数组。

👉 if($e$5=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1) 检查单元格的值在哪里 E5 的范围内是相等的 B5:B14 并返回前一个数组中的数字,其中它是真的。

👉 small(if($e$5=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1), row(1:1) 返回数组中最小的数字。

👉 index($c$5:$c$14,small(if($e$5=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1), row(1:1)) 然后返回该位置上的值,范围是 C5:C14 .

👉 最后。 iferror(index($c$5:$c$14,small(if($e$5=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1), row(1:1)),"" 确保如果一个值导致公式中出现错误,它将返回一个空字符串。

  • 第三,按 进入 .

  • 然后再次选择单元格。 最后,点击并向下拖动一些单元格的填充柄图标,以获得所有数值。

这样我们就可以使用Excel中的INDEX-MATCH垂直地返回多个值。

阅读更多。 在不同工作表中使用多个标准的索引匹配(2种方法)

总结

今天就讲到这里,我们已经尝试向你展示了几种多重匹配的INDEX MATCH的方法。 希望你会觉得有帮助。 如果有什么难以理解的地方,请随时评论。 欢迎你通知我们有什么其他的方法可以完成这个任务。

欲了解更多类似的指南,请访问 独家专访 .

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.