Excel VLOOKUP 多列

Excel VLOOKUP 多列

当我输入客户姓名时,我想将 6 列信息从 Excel 上的一张表拉到另一张表。我尝试了多种不同的数组和 vlookup 公式,但都不起作用。我是 Excel 新手,请多多包涵 :)

进一步解释一下,我有一个客户数据库,其中包含处理订单所需的重要信息。我希望当我输入客户姓名时,这些信息(分布在 6 个 Excel 列中)能够被拉到我的主要订单日志中。

答案1

如果您使用的是 Excel 365,您将可以访问 XLOOKUP。它可能会解决您的问题。

为了弄清楚您的想法,我创建了这个简单示例。工作表 1 将是您的数据库,工作表是结果页面。

在工作表 2 中,我使用 XLOOKUP 查看 A 列中的客户名称,并返回 A 列至 G 列的值。

在此处输入图片描述

希望您拥有 Office 365,并且这会为您指明正确的方向。

答案2

当然。这几乎就是 的用例VLOOKUP

假设您有两张表;一张是您的订单表,另一张是您的客户数据库。

命令:

订单表

另一张表/选项卡上是客户数据库。请注意,我已为该表指定了名称,稍后我们将使用它:

客户数据库

现在,我明白您希望能够做的是在订单表中输入客户姓名,然后自动提取客户数据。这里重要的是您有将这些表格表格化,这意味着当您添加新行时,Excel 将自动下拉公式,如下所示:

添加订单

您会看到,我刚刚输入了一个新的订单号,而尚未输入客户姓名,列C:E已经自动填充。

这是的公式C3=IFERROR(VLOOKUP([@[Customer Name]],Customers,2,FALSE),"Customer not found")

让我们看一下。从查找开始。=VLOOKUP([@[Customer Name]],Customers,2,FALSE)

VLOOKUP接受四个参数:

  1. 要找什么
  2. 查看位置(必须是给定范围的第一列)
  3. “查看位置”右侧的哪一栏用于报告
  4. 放在FALSE这里(此参数的用法留待另一讨论)

[@[Customer Name]]因此,您的意思是,在(客户表的整个数据范围)的第一列中查找(这是 Excel 表格符号,表示‘此表中客户名称列中此行的数据’) Customers,然后给我该范围的第二列的值2(在本例中为最喜欢的颜色)。

因此,您设置公式,例如C3要求列2C4要求列3等等。

然后用一个将其围起来,这样如果有拼写错误或数据错误,IFERROR就不会显得丑陋。#N/A

最后结果:

在此处输入图片描述

答案3

XLOOKUP(),因为BradR的答案是最简单的,尽管我怀疑在日志中使用它我怀疑你会更喜欢它:

=XLOOKUP(A2,  Sheet2!A2:A4,  Sheet2!B2:G4)

使得六列数据与名称/ID出现在同一行上。

但是,如果您希望使用VLOOKUP(),则可以使用如下公式:

=VLOOKUP(A2,  Sheet2!A2:G4,  {2,3,4,5,6,7},  FALSE)

我这样说是为了展示“数组常量”的使用,但任何能产生它的东西都是可以接受的。例如,SEQUENCE(1,6,2,1)会做同样的事情,并且它的参数都可以通过公式构建,而文字数组常量不能动态创建。

注意事项:

  1. VLOOKUP()将仅使用第一个参数,该参数会产生它在公式中找到的数组常量。因此,如果您使用数组常量作为查找值,它将仅采用后一个数组常量的第一个元素。在这种情况下,这意味着它将仅返回单个列的数据,而不是全部六个。但是,这通常是可以的,因为第一个参数最常用于连接多个输入(除了直接使用它之外),而不是一次搜索多个可能的查找值。(喜欢: "Jim" & " S. " & "Smith"但不是那么多{"Jim","Joe","Jill"}。)所以通常不是问题。

  2. 如果名称/ID 值可能有多个条目,则只FILTER()允许您使用一个函数来执行所有操作。(您可以通过其他方式构建这样的东西,但是通过一个简单的、或多或少的单一函数?不行。)相关的是,所有主要的三个单一结果查找都有从末尾搜索的方法(因此获取最后一个实例而不是第一个实例)XLOOKUP()是迄今为止最简单的方法)。

答案4

尝试 SUMPRODUCT 函数,输入公式并拖放到右侧:

=SUMPRODUCT(($A$2:$A$5=$K$2)*($B$1:$G$1=L1),$B$2:$G$5)

在此处输入图片描述

相关内容