我的Excel电子表格中有几列数据。
最初,我有两个不同的电子表格,因为它们是从软件应用程序中的报告生成的。
其中一个电子表格包含过去一年与我们进行过交易的个人姓名。另一个电子表格包含姓名和电话号码。我将带有姓名和电话号码的列复制并粘贴到我的电子表格中,其中只包含过去一年中从我们这里购买了东西的人的姓名。
我的最终目标是提取仅过去一年购买商品名称的姓名和电话号码。
我过去一年的专栏包含1,002个名字,而我的主客户名单(包含电话号码)包含超过20,000个人。我需要过去一年中从我们这里购买东西的所有个人的电话号码,但我不想手动浏览1,000个名字(基本上,20,000以上才能找到匹配)。
如果我可以在不使用VBA的情况下实现我的目标,那就太棒了。如果这是我可以采取的唯一路线,那么我将走这条路线,但我想尽可能避免编码。 (这仅仅是由于时间限制。)
答案 0 :(得分:0)
VLOOKUP
功能可能是您的最佳解决方案。从Excel文档中,它:
在表的最左列中查找值,然后返回 来自指定列的同一行中的值。默认情况下 表必须按升序排序。
请注意最后一句话的含义:您要搜索的列(查找表的最左侧列)必须按升序排序才能生成正确的结果。
举一个简单的例子,假设您的Excel工作簿中有Sheet1
,其中包含以下信息:
A B C
1 Name Transactions Phone
2 Sally 3
3 Alice 5
4 Joe 2
5 Jon 1
您需要将其电话号码添加到此工作表中。假设您在其他工作簿中的电话号码信息如下所示:
A B
1 Name Phone
2 Alice 2222222
3 Bill 3333333
4 Bob 4444444
5 Jim 5555555
6 Joe 6666666
7 Sally 7777777
8 Sue 8888888
9 Tom 9999999
按照以下步骤将电话号码添加到第一个工作簿中的Sheet1
:
Sheet2
称为此示例。Name
列(A)升序排序,因为这是最左边的列,因此是查阅列。C2
的单元格Sheet1
(Sally的空白手机单元格)中,输入:=VLOOKUP(A2, Sheet2!A$2:B$9, 2,FALSE)
。结果:
A B C
1 Name Transactions Phone
2 Sally 3 7777777
3 Alice 5 2222222
4 Joe 2 6666666
5 Jon 1 #N/A
注意:
Table_array
- 查找数据范围)不应包含列标题。如您所见,它是Sheet2!A$2:B$9
,因此它包含A列和B列中第2行到第9行的信息。Range_lookup
)应设置为FALSE
,因此您不会从最接近的匹配中获取信息。请注意 Jon 没有匹配的电话号码记录,因此他的Phone
设置为“#N / A” - 否则他将被分配 Joe 电话号码,因为它与 Jon 最接近。参数文档:
- Lookup_value 是在表格的第一列中找到的值,可以是值,引用或文本字符串。
- Table_array 是一个文本,数字或逻辑值表,其中检索数据。 Table_array可以是范围或的引用 范围名称。
- Col_index_num 是Table_array中应从中返回匹配值的列号。第一列值 该表是第1列。
- Range_lookup 是一个逻辑值:在第一列中找到最接近的匹配(按升序排序)= TRUE或省略;找 完全匹配= FALSE。
醇>