Table of contents
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的方法。 希望你会觉得有帮助。 如果有什么难以理解的地方,请随时评论。 欢迎你通知我们有什么其他的方法可以完成这个任务。
欲了解更多类似的指南,请访问 独家专访 .