当我输入客户姓名时,我想将 6 列信息从 Excel 上的一张表拉到另一张表。我尝试了多种不同的数组和 vlookup 公式,但都不起作用。我是 Excel 新手,请多多包涵 :)
进一步解释一下,我有一个客户数据库,其中包含处理订单所需的重要信息。我希望当我输入客户姓名时,这些信息(分布在 6 个 Excel 列中)能够被拉到我的主要订单日志中。
答案1
答案2
当然。这几乎就是 的用例VLOOKUP
。
假设您有两张表;一张是您的订单表,另一张是您的客户数据库。
命令:
另一张表/选项卡上是客户数据库。请注意,我已为该表指定了名称,稍后我们将使用它:
现在,我明白您希望能够做的是在订单表中输入客户姓名,然后自动提取客户数据。这里重要的是您有将这些表格表格化,这意味着当您添加新行时,Excel 将自动下拉公式,如下所示:
您会看到,我刚刚输入了一个新的订单号,而尚未输入客户姓名,列C:E
已经自动填充。
这是的公式C3
:=IFERROR(VLOOKUP([@[Customer Name]],Customers,2,FALSE),"Customer not found")
让我们看一下。从查找开始。=VLOOKUP([@[Customer Name]],Customers,2,FALSE)
VLOOKUP
接受四个参数:
- 要找什么
- 查看位置(必须是给定范围的第一列)
- “查看位置”右侧的哪一栏用于报告
- 放在
FALSE
这里(此参数的用法留待另一讨论)
[@[Customer Name]]
因此,您的意思是,在(客户表的整个数据范围)的第一列中查找(这是 Excel 表格符号,表示‘此表中客户名称列中此行的数据’) Customers
,然后给我该范围的第二列的值2
(在本例中为最喜欢的颜色)。
因此,您设置公式,例如C3
要求列2
、C4
要求列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)
会做同样的事情,并且它的参数都可以通过公式构建,而文字数组常量不能动态创建。
注意事项:
VLOOKUP()
将仅使用第一个参数,该参数会产生它在公式中找到的数组常量。因此,如果您使用数组常量作为查找值,它将仅采用后一个数组常量的第一个元素。在这种情况下,这意味着它将仅返回单个列的数据,而不是全部六个。但是,这通常是可以的,因为第一个参数最常用于连接多个输入(除了直接使用它之外),而不是一次搜索多个可能的查找值。(喜欢:"Jim" & " S. " & "Smith"
但不是那么多{"Jim","Joe","Jill"}
。)所以通常不是问题。如果名称/ID 值可能有多个条目,则只
FILTER()
允许您使用一个函数来执行所有操作。(您可以通过其他方式构建这样的东西,但是通过一个简单的、或多或少的单一函数?不行。)相关的是,所有主要的三个单一结果查找都有从末尾搜索的方法(因此获取最后一个实例而不是第一个实例)XLOOKUP()
是迄今为止最简单的方法)。