VLOOKUP在Excel中水平地返回多个数值

  • Share This
Hugh West

在Microsoft Excel中,有几个选项可以 VLOOKUP并返回多个值 虽然 VLOOKUP 函数本身不能横向返回多个值,你将在本文中通过适当的插图来了解替代选项。

下载实践工作手册

你可以下载我们用来准备这篇文章的Excel工作簿。

VLOOKUP横向返回多个数值.xlsx

2种VLOOKUP和水平返回多个值的方法

ǞǞǞ VLOOKUP 函数在表格的最左边一列中寻找一个值,然后从指定的列中返回同一行中的一个值。 你不能通过使用VLOOKUP函数一次提取多个值。 如果你向下拖动输出单元格以产生以下结果,你会得到一些数据的重复值。 而且,毕竟你无法在水平方向上显示提取的数据,只有的 VLOOKUP 功能 因此,我们可以在Excel电子表格中应用两种方法来达到我们的目的。

1.使用INDEX、SMALL和IF函数进行VLOOKUP并水平返回相应的值

在下图中,表格代表了一些智能手机型号及其品牌名称。 由于它们的顺序是随机的,我们将提取特定品牌的型号名称并在一行中横向显示。

例如,我们想在以下内容中显示智能手机品牌--三星的型号名称 第16行 .

📌 步骤1。

中要求的公式 细胞C16 将是。

=index($c$5:$c$14, small(if($b$16=$b$5:$b$14,row($b$5:$b$14)-row($b$5)+1), column(a1) )

➤ 在按下 进入 ,你会从表中得到三星的第一个型号名称。

📌 第2步。

现在使用 填充手柄 细胞C16 并将其向右拖动,沿着 第16行 直到一个 #NUM 出现错误。

跳过第一个 #NUM 错误,并在包含错误的单元格前停止自动填表。

而你将会在给定的表格中横向显示所有三星智能手机的型号名称。

🔎 这个公式是如何工作的?

  • 行($b$5:$b$14)-行($b$5)+1。 这一部分被分配给第二个参数 ([value_if_true]) 的。 基金会 它定义了单元格范围内所有可用数据的行号 B5:B14 并返回以下数组。

{1;2;3;4;5;6;7;8;9;10}

  • if($b$16=$b$5:$b$14, row($b$5:$b$14)-row($b$5)+1) 。 公式的这一部分只匹配三星设备的标准。 如果发现匹配,公式将返回透视的行号,否则,将返回 失败 因此,这个公式的总体返回数组将是。

{1;false;3;false;5;6;false;false;9;false}。

  • small(if($b$16=$b$5:$b$14, row($b$5:$b$14)-row($b$5)+1), column(a1)) : small 函数在这里提取从上一步找到的最低或最小的行号,并将其定义为第二个参数 (row_num) 的。 索引 功能。
  • 最后,整个公式和组合公式提取了三星设备的第一个型号名称,从 C列 .

阅读更多。 在Excel中使用多条件的VLOOKUP(6种方法+替代方法)

类似读物

  • VLOOKUP不工作(8个原因& 解决方案)
  • 为什么VLOOKUP在存在匹配时返回#N/A? (5个原因& 解决方案)
  • Excel VLOOKUP垂直地返回多个数值
  • Excel VLOOKUP返回一个单元格中由逗号分隔的多个值

2.VLOOKUP和从Excel的数据序列中横向返回多个值

现在让我们考虑另一种情况。 在下表中。 B栏 有两个智能手机品牌的排列顺序。 像以前一样,我们将提取一个特定品牌的型号名称,但使用不同的公式。 而且这个公式只适用于连续的数据范围。 如果品牌名称是随机的,如上一节所示,那么这个公式就不会适当地工作。

例如,我们将只提取小米智能手机的型号名称,并将其横向显示在 第16行 .

📌 步骤1。

在输出中 细胞C16 ,所需的公式将是。

=IF(COLUMN()-2<=COUNTIF($B$5:$B$14,$B16), INDEX($C$5:$C$14,MATCH($B16,$B$5:$B$14,0)+COLUMN()-3), "")

新闻 进入 你就会马上显示出小米的第一个智能手机型号名称。

📌 第2步。

现在使用 填充手柄 沿途自动向右填充 第16行 直到出现一个空白单元格。

然后你将会看到所有选定品牌的型号名称,就像下面的截图一样。

🔎 这个公式是如何工作的?

  • match($b16,$b$5:$b$14,0)。 ǞǞǞ 匹配 的函数。 索引 函数返回包含名字的单元格的第一行编号--小米。
  • match($b16,$b$5:$b$14,0)+column()-3: 这一部分是 索引 函数,该函数定义了将寻找第一个结果数据的行号。
  • index($c$5:$c$14, match($b16,$b$5:$b$14,0)+column()-3) 。 这一部分是IF函数的第二个参数 ([value_if_TRUE]) 其中,根据上一步找到的行号,提取第一个输出数据。
  • 如果没有找到匹配,则 基金会 函数将返回一个空白单元格。

💭注意。 为了正确地用这个公式返回数据,你必须从以下方面启动表格 B栏 其中 B栏 将代表标准和 C列 你还必须在表格下方或上方的B列中定义所选标准,如我在第2页所示。 细胞B16 .

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

结论性的话语

我希望上面提到的这两种方法现在能帮助你在Excel电子表格中应用它们,从表格中提取数据并在一行中水平显示。 如果你有任何问题或反馈,请在评论区告诉我。 或者你可以在本网站上查看我们与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.