Table of contents
在处理大量数据时,会导致产生多个结果。 在Excel中,有一个非常方便的方法来提取多个结果。 在这篇文章中,我们将告诉你如何使用 INDEX-MATCH 公式 在Excel中生成多个结果。
下载实践模板
你可以从这里下载免费的Excel练习模板,自己练习。
INDEX MATCH 多重结果.xlsx在Excel中实现INDEX和MATCH函数以提取多个结果的4种有用方法
本节将详细讨论如何利用 INDEX函数 和 MATCH函数 在Excel中一起使用,以获得多个结果。
1.在Excel中使用INDEX MATCH公式查找数组中的多个结果
考虑以下数据集,我们想找到不同考试的学生的不同分数。
我们可以通过运行一个 INDEX-MATCH 在我们的工作表中的公式。
在一个数组的集合中使用查找多个结果的步骤 INDEX-MATCH 功能如下。
步骤。
- 从数据集中选择一个名称( B5:B11 ),并把名字放在另一个单元格中,以便以后使用单元格参考号(例如,名字 维利尔斯 在 细胞G4 ).
- 在另一个你想作为结果单元格的单元格(如 细胞G7 ),写出以下公式。
=index($c$5:$c$11,small(if(isnumber(match($b$5:$b$11,$g$4,0)),match(row($b$5:$b$11),row($b$5:$b$11)),""),rows($a$1:a1))
在这里。
C$5:C$11 = 阵列中搜索的查询值
5美元:11美元 = 阵列,其中查找值为
- 新闻 进入 .
你会注意到,数据的结果(如 维利尔斯 ),你把它放在选定的单元格中( G4 ),将出现在结果单元格中(如 65 在 G7 ).
- 现在将该行向下拖动 填充手柄 来获得其余的同一查询值的结果。
由于这个过程对任何特定的值都不是恒定的,所以你可以在选定的单元格中挑选任何查询数据(如 G4 ),该特定数据的结果将在结果单元格中自动更新(如 G7 ).
要了解更多信息,请看下面的GIF。
公式分解。
让我们分解一下这个公式,了解我们是如何得到这个结果的。
- match($b$5:$b$11, $g$4, 0) 成为。
-> MATCH({"Flintoff"; "Ronaldo"; "Plessis"; "Villiers"; "Beckham"; "Villiers"; "Plessis"}, "Villiers", 0)
-> 输出。 {#n/a; #n/a; #n/a; 1; #n/a; 1; #n/a}。
解释一下。 如果搜索值在查找数组中找到一个匹配,那么 匹配 函数返回 1 ,否则就会返回 #N/A .
- isnumber(match($b$5:$b$11, $g$4, 0) 成为。
-> isnumber({#n/a; #n/a; #n/a; 1; #n/a; 1; #n/a})
-> 输出:{FALSE; FALSE; FALSE; TRUE; FALSE; TRUE; FALSE}。
解释一下。 如 中频函数 无法处理错误值,所以 ISNUMBER函数 在这里,我们利用了 "Boolean "来将数组值转换为布尔值。
- if(isnumber(match($b$5:$b$11, $g$4, 0)), match(row($b$5:$b$11), row($b$5:$b$11) ), "") 成为。
-> if({false; false; false; true; false; true; false}, match(row($b$5:$b$11), row($b$5:$b$11), "")
成为
-> if({false; false; false; true; false; true; false}, {1; 2; 3; 4; 5; 6; 7}, " ")
-> 输出:{"";"";"";4;"";6}。
解释一下。 首先是 基金会 函数将布尔值转换为行号和空号。 之后,在 匹配 和 职能部门 s计算一个有连续数字的数组,从1到n,其中n是单元格范围总大小的最后一个数字标识。 正如 5美元:11美元 有7个值,所以数组变成 {1; 2; 3; 4; 5; 6; 7} .
- small(if(isnumber(match($b$5:$b$11, $g$4, 0)), match(row($b$5:$b$11), row($b$5:$b$11)), " "), rows($a$1:a1)) 成为
-> small({""; ""; ""; 4; ""; 6}, rows($a$1: a1))
-> small({""; ""; ""; 4; ""; 6}, 1)
-> 输出:4
解释一下。 首先。 小型功能 决定根据行号获取哪一个值。 接下来是 行数 函数返回一个数字,该数字在每次单元格被复制和粘贴到下面的单元格时都会发生变化。 最初,它返回的是 4 根据我们的数据集。 在下面的单元格中。 ROWS($A$1:A1) 变化,以 ROWS($A$1:A2) 并返回 6 .
- index($c$5:$c$11, small(if(isnumber(match($b$5:$b$11, $g$4, 0)), match(row($b$5:$b$11), row($b$5:$b$11)), "" ), rows($a$1:a1)) 成为
-> index($c$5:$c$11, 4)
-> 输出:65
解释一下。 ǞǞǞ 索引 函数从一个给定的数组中返回一个基于行号和列号的值。 第四届 数组中的值 C$5:C$11 是 65 ,所以 索引 函数返回 65 在细胞中 G7 .
阅读更多。 Excel中的IF与INDEX-MATCH(3种合适的方法)
2.用Excel中的INDEX MATCH公式查找即将发生的事件的名称和日期的多个结果
有时我们会忘记重要事件的日期。 在这种情况下, 指数匹配 职能部门作为救援人员开展工作。
下面是我们想知道朋友们即将到来的生日的数据样本。
因此,我们所做的是,实施一个 指数匹配 计算出下一次是谁的生日,是什么时候。
因此,知道这个人的名字或即将发生的事件的公式是。
=index($b$5:$b$9,match(f5,$c$5:$c$9,1)+1)
而要知道即将发生的事件的日期,公式是。
=index($c$5:$c$9,match(f5,$c$5:$c$9,1)+1)
公式分解。
让我们来分析一下这个公式,了解我们是如何找到亚历克斯这个名字和他的生日日期的。
- match(f5,$c$5:$c$9,1)
-> 输出:4
解释一下。 ǞǞǞ 匹配 函数找到查找值的位置( 细胞F5 2021年11月11日,星期四 )在数组常数( $C$5:$C$9 日期列表 ).
在这个例子中,我们不想要一个精确的匹配,我们想要的是 匹配 函数来返回一个近似的匹配,因此我们将第三个参数设置为 1 (或 是的 ).
- index($b$5:$b$9,match(f5,$c$5:$c$9,1)+1) 成为
-> index($b$5:$b$9, 4) +1)
-> 输出:Alex /(事件的名称)
解释一下。 ǞǞǞ 索引 函数需要两个参数来返回一个一维范围内的特定值。 这里,范围 $B$5:$B$9 首先是参数和我们在上一节的计算中得到的结果 (match(f5,$c$5:$c$9,1)) ,位置 4 这意味着我们正在搜索位于位置的值 4 在 $B$5:$B$9 范围。
还有。
- index($c$5:$c$9,match(f5,$c$5:$c$9,1)+1) 成为
-> index($b$5:$b$9, 4) +1)
-> 产出:2021年12月7日,星期二
解释一下。 ǞǞǞ 索引 函数需要两个参数来返回一个一维范围内的特定值。 这里,范围 $C$5:$C$9 首先是参数和我们在上一节的计算中得到的结果 (match(f5,$c$5:$c$9,1)) ,位置 4 这意味着我们正在搜索位于位置的值 4 在 $C$5:$C$9 范围。
为了得到即将发生的事件的日期,我们只需在单元格的位置添加一个由 匹配 函数,它给了我们下一个事件日期的单元格位置。
阅读更多。 Excel INDEX-MATCH公式水平返回多个数值
类似读物
- 在Excel中用通配符进行索引匹配的多重标准(完整指南)。
- [修复!]在Excel中INDEX MATCH没有返回正确的值(5个原因)。
- 如何在Excel中使用INDEX MATCH代替VLOOKUP(3种方法)?
- Excel中重复值的INDEX+MATCH(3种快速方法)
- 如何在Excel中选择特定数据(6种方法)
3.在Excel中使用INDEX MATCH公式将多个结果生成独立的列
到目前为止,我们一直是按行获取结果。 但是,如果你想按以下方式获取结果呢? 分栏 .
考虑以下数据集,它由三种类型的职业组成,代表多个人名。
我们想根据职业来制作一组人,我们想把名字放在 纵横捭阖 根据他们的职业。
要将多个匹配结果提取到不同列的不同单元格中,你可以用一个小技巧,用 索引 功能。
让我们来学习一下如何在Excel中结合使用以下方法在多列中提取多个匹配结果 索引 职能和其他。
步骤。
- 从数据范围中选择一个职业( B5:B11 ),并将数据放在另一个单元格中,以便以后使用该单元格的参考号(例如,职业 板球运动员 在 细胞E5 ).
- 在另一个你想作为结果单元格的单元格(如 细胞F5 ),写出以下公式。
=iferror(index($c$5:$c$11,small(if($b$5:$b$11=$e5,row(c5:c11)-min(row(c5:c11)))+1), columns($e$5:e5)),""
在这里。
C$5:C$11 = 阵列中搜索的查询值
5美元:11美元 = 阵列,其中查找值为
- 新闻 进入 .
你会注意到,数据的结果(如 板球运动员 ),你把它放在选定的单元格中( E5 ),将出现在结果单元格中(如 弗林托夫 在 细胞F5 ).
- 现在通过以下方式拖动该行 填充手柄 来获得你在单独的多列中的同一查找值的其余结果。
- 再次,通过以下方式拖动该行 填充手柄 来获得你的不同查询值的其余结果(如 足球运动员, 摔跤运动员 )分开的多列中。
公式分解。
让我们分解一下这个公式,了解我们是如何得到这个结果的。
- small(if($b$5:$b$11=$e5,row($c$5:$c$11)-min(row($c$5:$c$11))+1), columns($e$5:e5))
从前面的讨论中,我们已经知道如何 小,如果 和 ROW 函数一起工作,我们在这里也使用这个技巧来生成对应于第N个匹配的行号。 一旦我们得到了行号,我们只需将其传递到 索引 函数,返回该行的值。
-> 输出。 ( 如下图所示 )
- index($c$5:$c$11,small(if($b$5:$b$11=$e5,row($c$5:$c$11)-min(row($c$5:$c$11)))+1), columns($e$5:e5)) -> 将行数传给 索引 函数来提取相应行号的值。
-> 输出。 ( 如下图所示 )
- iferror(index($c$5:$c$11,small(if($b$5:$b$11=$e5,row(c5:c11)-min(row(c5:c11)))+1), columns($e$5:e5)),"" -> 注意,当列返回一个不存在的值时,它会抛出一个 #NUM 为了防止这个错误,我们用 "A "来包裹整个公式。 IFERROR函数 来捕捉错误并设置一个 空字符串("")。 作为回报。
-> 输出。 ( 如下图所示 )
阅读更多。 Excel INDEX MATCH返回一个单元格中的多个值
4. 在Excel中利用INDEX MATCH函数将多个结果提取到独立的行中
如果你想知道将多个结果提取为多行的方法,就像我们在上一节中做的那样,那么公式是:。
=iferror(index($c$5:$c$11,small(if($b$5:$b$11=e$4,row(c5:c11)-min(row(c5:c11)))+1), rows($e$5:e5)),""
其他的细节,如步骤和公式细分,都与第3节相同。
你必须记住的关键点
- 由于要搜索的数据表数组的范围是固定的,不要忘记把 美元 符号在阵列表的单元格参考号前面。
- 在处理数组值时,不要忘记按 Ctrl + Shift + Enter 在提取结果时,只按键盘上的 进入 只有在你使用 微软365 .
- 在按下 Ctrl + Shift + Enter ,你会注意到,公式栏里的公式是在 大括号 {} 不要输入那些 括号 {} 你自己,Excel会自动为你做这个。
总结
这篇文章详细解释了如何使用 指数匹配 函数来提取Excel中的多个结果。 我希望这篇文章能让你受益匪浅。 如果你对这个话题有任何疑问,请随时提问。