在一張 Excel 工作表中,我有兩個不同的資料集,每個資料集三列,它們代表非常相似的資料。
我想將其合併為一組三列。
每個資料集都有其最左邊的列作為我想要分組的鍵。
鍵在每個資料集中出現一次或從不出現。其他列是數字,並且可能為空(解釋為零)。這兩個系列的長度可能不同。
就像這樣:
[Name_A],[Score_A],[Value_A],[Name_B],[Score_B],[Value_B]
Adam,14,20,Johnny,8,
Johnny,11,,Bernice,5,5
,,,Adam,2,8
應匯總為:
[Name],[Score],[Value]
Adam,16,28
Johnny,19,
Bernice,5,5
最終結果中的行順序並不重要。
答案1
答案2
合併資料集的關鍵是提取唯一名稱的清單。這是很多如果名稱全部在一列中,則更容易。如果您必須按照所示方式排列數據,可以使用 VBA 解決方案,因此如果需要,請在下面發表評論。
在下面的第一個表中,我已將“B”資料移至“A”資料下,並在每個部分中新增了更多行。
此公式從 E2 向下填充,列出名稱並刪除重複項:
=IFERROR(INDEX((A$2:A$15),MATCH(0,COUNTIF($E$1:E1,A$2:A$15),0)),"")
它是一個陣列公式,所以必須用 來輸入CTRLShiftEnter。
這兩個公式從 F2 和 G2 開始填寫,將清單中每個名字的分數和數值相加:
=IF(LEN(E2)<1,"",SUMIF(A$2:A$15,E2,B$2:B$15))
=IF(LEN(E2)<1,"",SUMIF(A$2:A$15,E2,C$2:C$15))
______________________________________________________________________
怎麼運作的:內部COUNTIF()
建立一個數組,其中包含 A 列中的每個名稱出現在 E 列的不斷增長的列表中的次數MATCH()
。的row_num INDEX()
,從 A 列選取名稱。
IFERROR()
為具有 #NUM! 的行插入空白!當公式用完唯一值時出錯。
這兩個SUMIF()
公式只是將每個名稱的分數和值數字相加。IF()
為 E 列長度 < 1 的行插入一個空白(即儲存格沒有名稱並且顯示為空白)。