EXCEL:如何合并两组客户数据

时间:2015-08-07 13:39:12

标签: excel merge worksheet-function

我相信这个问题有一个非常简单的答案,但经过广泛的研究,我不知何故找不到我想要的东西。我不是一个excel专家,但确实有一些经验。

基本上我有2组数据按客户帐号编制索引,并在一个文件和销售代表负责人,在另一个文件中联系的次数中提供某些值,例如销售,利润,成本等。

我现在的目标是将这两个文件合二为一,这样我就可以在第一列中获得客户ID,并在一张纸上的旁边的列中显示与该客户编号相对应的所有数据。

然而,两张纸上的客户编号没有以任何方式排序,所以我不能复制并粘贴它,我正在处理相当大的数据集,所以我不能手动完成。此外,第一张表中的客户ID比第二张表中的客户ID多,因为某些客户缺少某些数据。

我怎样才能基本上自动合并属于每个客户的数据,使其最终显示在一行中?

2 个答案:

答案 0 :(得分:1)

我建议您通过创建第3个综合列表来合并这两个列表,这些列表会从您的原始数据文件中提取。

设置新的结果表

假设一个列表在Book1,sheet1中,另一个列表在Book2,sheet1中。打开一个新的Excel文件。将标题放在顶部。接下来,您将创建一个索引,该索引显示按编号排序的所有唯一客户ID号。 只有在没有重复的ID 时才会有效(除了引用同一个cusotmer的那个)。

将Book 1列中的Customer ID列手动复制到New book中。在Book1客户下手动复制Book2中的客户ID,在新书的同一列中。突出显示客户ID列。转到“数据”功能区,然后单击“删除重复项”。然后右键单击您的数据,然后单击“排序”。这将为您提供订购的客户ID列,其他标题下的所有其他字段将为空白。

Vlookup公式

接下来,您将使用2个vlookup公式,类似于@StaceyBurns在下面推荐的公式。 Vlookup采用特定的唯一值,并在数据块的最左列中查找该值。然后它会第一次找到该值的匹配项,并从该行上的一个单元格返回一个值,给定数量的列。例如:

=VLOOKUP(A1,B1:D5,2,FALSE)

说:取A1中找到的唯一值,从第1行:5中的B列中查找该值,并从数据块B:D(C列)中返回第2列的结果。因此,如果A1与B3相同,则此公式将为C3提供结果。 FALSE意味着如果没有匹配,它会尝试估算您的价值。

假设所有文件的客户索引都在A列中。假设所有其他标题的顺序相同,请说A1:H1。您在新工作簿中使用VLOOKUP的公式如下 - 将其放在B2:

=VLOOKUP($A2,[Book1.xlsx]Sheet1!$A:$H,column(),FALSE)

这为您提供了Sheet1的B列标题下的匹配金额,其中Sheet1!的客户ID与新书的单元格A2中显示的客户ID相匹配。但是,我们需要知道它是否能够正确地从Book1中获取值 - 因为我们知道某些数据是不完整的。因此,让我们检查上面的结果是数字还是文字:

确定是否在Sheet1中找到了结果

=OR(ISTEXT(VLOOKUP($A2,[Book1.xlsx]Sheet1!$A:$H,COLUMN(),FALSE)),ISNUM(VLOOKUP($A2,[Book1.xlsx]Sheet1!$A:$H,COLUMN(),FALSE)))

如果结果是数字或文本,则返回TRUE。因此,如果在Book1 Sheet1上找不到该ID号的匹配项,或者结果是空白单元格,则返回FALSE。所以现在我们把它放在IF语句中 - 如果它返回true,我们想要Book1的结果。如果它返回false,我们想要尝试从Book2中拉出结果,通过完全相同的公式。整件事情看起来像这样:

最终公式

=IF(OR(ISTEXT(VLOOKUP($A2,[Book1.xlsx]Sheet1!$A:$H,COLUMN(),FALSE)),ISNUM(VLOOKUP($A2,[Book1.xlsx]Sheet1!$A:$H,COLUMN(),FALSE))),VLOOKUP($A2,[Book1.xlsx]Sheet1!$A:$H,COLUMN(),FALSE),VLOOKUP($A2,[Book2.xlsx]Sheet1!$A:$H,COLUMN(),FALSE))

现在,它会尝试从Book1中找到匹配项 - 如果ID不匹配,或者匹配项返回该标题的空白值,那么它将尝试从Book2中找到匹配项。如果在那里找不到匹配,它将返回#N / A! (这不应该发生,因为这意味着您已经删除了我们直接从Book1& Book2中提取的客户ID之一)。如果该数据块不在任何一个工作表中,它可能会返回一个空白单元格。此公式可以从B2一直复制到结果表中数据块的右下角。

答案 1 :(得分:0)

您可以使用第一张纸上的VLOOKUP功能将第二张纸张中的数据输入。

例如,在第一张工作表上取一个空列并添加VLOOKUP函数,如下所示:

=VLOOKUP(cell to lookup,
set of data on 2nd file,
column index on 2nd file of data you want,
TRUE/FALSE Boolean to ask for either close match or exact match )

如果您的客户ID在A栏中,而您的第二张表格如下:

A1客户ID

B2销售代表

C3联系次数

然后你会先查看销售代表:

=VLOOKUP(A1,Sheet2!$A$1:$C$15,2,FALSE)

然后双击此单元格的右下角以填充所有行的公式。

然后在新单元格中执行相同的联系次数:

=VLOOKUP(A1,Sheet2!$A$1:$C$15,3,FALSE)

(注意我在C15中使用了VLOOKUP作为示例。它应该是您在文件2中拥有的行数)

更多信息: https://support.office.com/en-us/article/VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1