如何在Excel中用多个匹配项进行Vlookup(简易步骤)?

  • Share This
Hugh West

Excel中最令人惊叹和使用最广泛的功能之一是 VLOOKUP函数 到目前为止,我们已经学会了使用这个函数从一个单元格区域中提取单个匹配值。 你可能经常遇到这样的情况:你需要获得一个唯一标识符的所有匹配值。 在这篇文章中,我们将演示如何从一个单元格区域中使用 VLOOKUP函数 在Excel中。

下载实践工作手册

你可以下载以下Excel工作簿,以便更好地理解和自己练习。

用多个匹配项执行Vlookup.xlsx

在Excel中使用多个匹配的Vlookup的2个步骤

这里我们有 马丁书店的图书记录 这个数据集包含了 书籍类型 , 书名 ,以及 作者 栏目下的一些书籍 B , C ,以及 D 相应地。

今天,我们的目标是要把每一种类型的书的所有匹配信息都拉出来,用 VLOOKUP函数 我们将分两步执行。 因此,让我们一个一个地探索它们。

在这里,我们使用了 微软Excel 365 版本,你可以根据你的方便使用任何其他版本。

📌 步骤01:为每个查询值创建唯一的名称

  • 在最开始,插入一个新的列,标题为 帮手专栏 左边的查找栏 书籍类型 并在单元格中输入这个公式 B5 .
=C5&COUNTIF(C5:$C$25,C5)。 公式分解
  • countif(c5:$c$25,c5) 返回范围内的单元格总数 C5:C25 ( 书籍类型 ),其中包含单元格中的值 C5 ( 小说 ).见 COUNTIF功能 详情请见下文。
    • 简单地说,就是有多少本小说。 它是 7 .
  • C5&COUNTIF(C5:$C$25,C5)。 将单元格中的值连接到 C5 ( 小说 )与它。
    • 所以它的回报是 小说7 .

当拖动 填充手柄 工具。 C5 逐一递增,如 C5 , C6 , C7 ...但是 C25 因此,对于每个 书籍类型 剔除早期的,生成一个新的名字。

例如,在小说的情况下。 小说1 小说7 生成,类似的情况还有 诗歌 和其他书籍类型。

  • 然后,按 进入 .

  • 之后,将光标移到单元格的右下角 B5 而且会看起来像一个加号 (+) 符号。 事实上,这是 填充手柄 工具。
  • 现在,双击它。

它将这个公式复制到其他单元格。 你会发现所有的查询值都有一个独特的名字,比如 小说1 , 小说2......。 诗歌1 , 诗歌2... ,等等。

📌 步骤02:使用VLOOKUP函数

  • 首先,创建一个新的列,其中包括 专栏标题 作为查询值。

  • 其次,在单元格中插入以下公式 G5 也就是这一列的第一个单元格。
=VLOOKUP(G$4&ROW($A$1:INDIRECT("A"&COUNTIF($C$5:$C$25,G$4)),$B$5:$E$25,3,FALSE) 公式分解
  • countif($c$5:$c$25,g$4) 告诉你范围内有多少个单元格 C5:C25 ( 书籍类型 )包含单元格中的值 G4 ( 小说 ).
    • 简单地说,就是总共有多少部小说。 它是 7 .

我们使用了区域的绝对单元格引用 C5:C25 ( 5美元:25美元 ),因为我们想让它在复制公式到任何单元格时保持不变。

  • INDIRECT("A"&COUNTIF($C$5:$C$25,G$4)) 成为 INDIRECT("A"&7) 并返回单元格引用 A7 请看 INDIRECT功能 详情请见下文。
  • ROW($A$1:INDIRECT("A"&COUNTIF($C$5:$C$25, G$4)) 现在变成了 ROW(A1:A7) .见 ROW功能 详情请见下文。
    • 它会返回一个数组,从 1 7 喜欢 {1, 2, 3, 4, 5, 6, 7} .

我们用 $A$1 因为我们不希望在复制公式到另一个单元格时它会发生变化。

  • G$4&ROW($A$1:INDIRECT("A"&COUNTIF($C$5:$C$25,G$4)) 现在将单元格中的值连接到 G4 ( 小说 )与由 ROW功能 并返回另一个数组。
    • 所以它的回报是 {小说1, 小说2, ..., 小说7}。 .
  • VLOOKUP(G$4&ROW($A$1:INDIRECT("A"&COUNTIF($C$5:$C$25,G$4)),$B$5:$E$25,3,FALSE) 成为 VLOOKUP({Novel1, Novel2, ..., Novel7},$B$5:$E$25,3,FALSE) .

它搜索数组的每个值 {小说1,小说2,......小说7}。 在查找栏中 B .

然后,它将返回相应的小说名称,从 第三届 栏(如 col_index_num 3 因此,我们得到一份所有小说的清单。

  • 像往常一样,按 进入 钥匙。

请注意。 这是一个数组公式,所以别忘了按 Ctrl + Shift + Enter 除非你是在Excel 365中 .

而对于其他 书籍类型 ,

  • 起初,将他们的名字并排插入,作为 专栏标题 并拖动 填充手柄 .

阅读更多。 Excel中的INDIRECT VLOOKUP

类似读物

  • VLOOKUP不工作(8个原因& 解决方案)
  • Excel中的LOOKUP与VLOOKUP:有三个例子
  • 为什么VLOOKUP在存在匹配时返回#N/A? (5个原因& 解决方案)
  • 在Excel中使用多条件的VLOOKUP(6种方法+替代方法)
  • Excel VLOOKUP查找列中最后一个值(含替代方法)

在Excel中使用多个匹配的Vlookup的替代方法

如果前面的方法看起来很危险,不要担心。 还有更多的选择。

1.使用FILTER功能

这的确是最简单的方法。 在这里,我们将只使用 滤波功能 遵循这些简单的步骤。

📌 步骤。

  • 首先,写下 书籍类型 作为 专栏标题 并在单元格中输入以下公式 F5 .
=filter($c$5:$c$25,$b$5:$b$25=f$4) 公式分解

在这里。

  • 5美元:25美元 ( 书名 )是指 lookup_array 我们在找书的名字,你用你的名字。
  • B$5:B$25 ( 书籍类型 )是指 匹配数组 我们希望与书的类型相匹配。 你相应地使用你的一个。
  • F4 ( 小说 )是指 matching_value 我们要与小说相匹配。 你要相应地使用它。
  • 然后,按 进入 .

现在,如果你想 书名 的所有 书籍类型 ,

  • 最初,插入他们的名字作为 专栏标题 并排排列,然后拖动 填充手柄 工具。

2.应用 INDEX、SMALL 和 ROWS 函数的组合(与旧版 Excel 兼容)。

ǞǞǞ 滤波功能 只适用于 办公室365 所以,如果你使用旧版本的Excel,不要担心。 我们为你准备了另一个解决方法。 它很简单,很容易,只要跟着做就可以了。

📌 步骤。

  • 主要是,插入 书籍类型 作为 专栏标题 在细胞中 F4 并在单元格中输入这个公式 F5 .
=iferror(index($c$5:$c$25,(small(if($b$5:$b$25=f4,row(b5:b25)-rows(b1:b4),""), (row(b5:b25)-rows(b1:b4))))),"") 公式分解
  • ROW(B5:B25) 返回一个数组的 {5, 6, 7, ..., 25} .而且 ROWS(B1:B4) 返回 4 .所以 行(b5:b25)-行(b1:b4) 返回一个数组的 {1, 2, 3, ..., 21} 请看 ROW 润泽 详细情况请参见函数。
  • if($b$5:$b$25=f4,row(b5:b25)-rows(b1:b4)," ") 返回数组中的相应数字 {1, 2, 3, ..., 21} 单元格中的值 F4 ( 小说 )与范围内任何单元格中的值相匹配 B5:B25 ( 书籍类型 )。 否则返回一个空白单元格。 见 IF功能 详情请见下文。

  • small(if($b$5:$b$25=f4,row(b5:b25)-rows(b1:b4),""), (row(b5:b25)-rows(b1:b4))) 成为 small({1, ..., 3, ..., 6, ..., 20, ...}, {1, 2, 3, 4, ...., 21}) 并首先返回数字,然后 #NUM! 在空白单元格中的错误。 见 小型功能 详情请见下文。

  • index($c$5:$c$25,(small(if($b$5:$b$25=f4,row(b5:b25)-rows(b1:b4),""), (row(b5:b25)-rows(b1:b4)))))) 成为 index($c$5:$c$25,{1,3,6,11,..., #num!}) 并返回相应的 书名 (小说名称)和 #NUM! 错误。 见 INDEX功能 详情请见下文。

  • 最后,我们将该公式包裹在一个 IFERROR函数 来把错误变成空白单元格。
  • 之后,按 进入 .

  • 现在,如果你愿意,可以插入另一个 书籍类型 作为 专栏标题 并拖动 填充手柄 你将得到其他类型的书籍。

3.有多个匹配的Vlookup并在一行中返回结果

在前面的方法中,我们得到的是竖列的结果。 但如果我们想得到一行的值,我们该如何做呢? 在这里,我们将得到 作者 不同的名称 书籍类型 仔细按照下面的步骤操作即可。

📌 步骤。

  • 一开始,请转到单元格 G5 并写下下面的公式。
=iferror(index($d$5:$d$19,small(if($f5=$b$5:$b$19,row($d$5:$d$19)-4,""), column()-6)),""

这个公式与之前的公式有点类似。 因此,如果你在理解这个公式时遇到任何问题,请看 以前的解释 .

  • 然后,点击 进入 钥匙。

但在这个数据集中还有其他作者的小说。 那么,我们如何才能得到它们呢?

只要拖动 填充手柄 向右转至细胞 K5 以获得其他 作者 小说 此外,拖动 填充手柄 工具到细胞 K7 以获得 作者 不同类型的书,请看下面的图片加以说明。

如何用几个标准来Vlookup众多的匹配项

在我们之前的例子中,我们找到了单个标准的值。 例如,我们获得了特定书籍类型的书名。 但在这里,我们将暗示多个标准。 我们将查询 小说 查尔斯-狄更斯 让我们看看它的实际效果。

📌 步骤。

  • 首先,最重要的是,选择单元格 H5 并粘贴以下公式。
=iferror(index($c$5:$c$25,small(if(1=((--($f$5=$b$5:$b$25))*(--($g$5=$d$5:$d$25)), row($c$5:$c$25)-4,""), row()-4)), "")
  • 然后,按 进入 .

如何在一个单元格中Vlookup并返回多个匹配数据

在前面的方法中,我们在不同的单元格中得到了数值。 但我们将展示如何在一个单元格中得到结果。 因此,不再拖延,让我们深入了解一下吧

📌 步骤。

  • 主要是,去细胞 G5 并输入以下公式。
=textjoin(", ", true,if($f$5=$b$5:$b$25,c5:c25,"))

在这里, IF功能 获取范围内的值 C5:C25 其中相应的数值范围为 B5:B25 匹配单元格中的值 F5 那么, TEXTJOIN功能 将数组的值以逗号作为分隔符组合起来。

  • 其次,按 进入 .

阅读更多。 INDEX MATCH与VLOOKUP功能的比较(9个例子)

总结

本文以简单明了的方式解释了如何在Excel中进行多重匹配的vlookup。 不要忘记下载练习文件。 感谢您阅读本文,希望对您有所帮助。 如果您有任何疑问或建议,请在评论区告诉我们。 请访问我们的网站。 ǞǞǞ 探讨更多内容,请访问一站式Excel解决方案提供商--北京中关村在线。

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.