![](/img/trans.png)
[英]Merge two related data sets by common value, LibreOffice/Excel or CSV
[英]EXCEL: How to merge 2 sets of customer data
我敢肯定,這個問題的答案很簡單,但是經過大量研究,我仍然找不到我想要的東西。 我不是excel專業人士,但確實有一些經驗。
基本上,我有兩組數據,這些數據按客戶帳號索引,並在一個文件中提供某些值,例如銷售額,利潤,成本等,在另一個文件中提供負責的銷售代表以及聯系的時間。
我現在的目標是將這兩個文件合而為一,以便我在第一列中具有客戶ID,並在一張紙上的第二列中具有與該客戶號有關的所有數據。
但是,兩張表中的客戶編號沒有進行任何排序,因此我不能只復制和粘貼它,而且我正在處理相當大的數據集,所以不能僅僅手動進行。 此外,第一張工作表中的客戶ID比第二張工作表中的要多,因為某些數量的客戶缺少某些數據。
我如何基本上可以自動合並屬於每個客戶的數據,以便最終將其顯示在一行中?
我建議您通過創建第三個綜合列表來合並這兩個列表,該列表從原始數據文件中提取。
設置新的結果表
假定一個列表在Book1的sheet1中,而另一個列表在Book2的sheet1中。 打開一個新的Excel文件。 將標題放在頂部。 接下來,您將創建一個索引,該索引顯示所有唯一的客戶ID號,並按編號排序。 僅當沒有重復的ID時才有效 (除了引用相同cusotmer的ID除外)。
手動將“客戶ID”列從Book1復制到“新書”中。 在“新書”的同一列中,從Book1客戶下面的Book2中手動復制客戶ID。 突出顯示客戶ID列。 轉到數據功能區,然后刪除重復項。 然后右鍵單擊您的數據,然后單擊“排序”。 這將為您留下一個訂購的客戶ID列,而其他標題下的所有其他字段將為空白。
Vlookup公式
接下來,您將使用2個vlookup公式,類似於@StaceyBurns在下面建議的公式。 Vlookup采用一個特定的唯一值,並在數據塊的最左列上查找該值。 然后,它第一次找到該值的匹配項,並從給定列數之外的該行上的單元格返回一個值。 因此,例如:
=VLOOKUP(A1,B1:D5,2,FALSE)
說:取在A1中找到的唯一值,從行1:5在B列中查找該值,然后從數據塊B:D(列C)中返回第二列的結果。 因此,如果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一直復制到結果表中數據塊的右下角。
您可以在第一張紙上使用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
客戶編號
B2
銷售代表
C3
聯系次數
那么您將首先查找銷售代表:
=VLOOKUP(A1,Sheet2!$A$1:$C$15,2,FALSE)
然后雙擊該單元格的右下角以填充所有行的公式。
然后在新單元格中進行“聯系次數”中的相同操作:
=VLOOKUP(A1,Sheet2!$A$1:$C$15,3,FALSE)
(請注意,我在上面的VLOOKUP
中以C15
為例。它應該是文件2中的行數)
更多信息: https : //support.office.com/zh-cn/article/VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.