如何删除两个不同列中的不匹配值并在Excel中排序?

时间:2015-03-04 22:10:08

标签: excel

我的Excel电子表格中有几列数据。

最初,我有两个不同的电子表格,因为它们是从软件应用程序中的报告生成的。

其中一个电子表格包含过去一年与我们进行过交易的个人姓名。另一个电子表格包含姓名和电话号码。我将带有姓名和电话号码的列复制并粘贴到我的电子表格中,其中只包含过去一年中从我们这里购买了东西的人的姓名。

我的最终目标是提取过去一年购买商品名称的姓名和电话号码。

我过去一年的专栏包含1,002个名字,而我的主客户名单(包含电话号码)包含超过20,000个人。我需要过去一年中从我们这里购买东西的所有个人的电话号码,但我不想手动浏览1,000个名字(基本上,20,000以上才能找到匹配)。

如果我可以在不使用VBA的情况下实现我的目标,那就太棒了。如果这是我可以采取的唯一路线,那么我将走这条路线,但我想尽可能避免编码。 (这仅仅是由于时间限制。)

1 个答案:

答案 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

  1. 将手机信息复制到第一个工作簿中的空白页。我们将此Sheet2称为此示例。
  2. 确保电话信息按Name列(A)升序排序,因为这是最左边的列,因此是查阅列。
  3. C2的单元格Sheet1(Sally的空白手机单元格)中,输入:=VLOOKUP(A2, Sheet2!A$2:B$9, 2,FALSE)
  4. 将此公式向下拖动到“电话”列中的其余单元格。
  5. 结果:

         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 最接近。

    参数文档:

      
        
    1. Lookup_value 是在表格的第一列中找到的值,可以是值,引用或文本字符串。
    2.   
    3. Table_array 是一个文本,数字或逻辑值表,其中检索数据。 Table_array可以是范围或的引用   范围名称。
    4.   
    5. Col_index_num 是Table_array中应从中返回匹配值的列号。第一列值   该表是第1列。
    6.   
    7. Range_lookup 是一个逻辑值:在第一列中找到最接近的匹配(按升序排序)= TRUE或省略;找   完全匹配= FALSE。
    8.