2015-04-14 75 views
1

我有兩列,我想獲得一個獨特的地方列表與下一列計數的總和。從一組逗號分隔值中獲取列的數量?

例如:

當前

Places (ColumnA)     Count(ColumnB) 
Italy, Greece, France    10 
Italy, Greece      5 
France       1 

期望的結果

Places (ColumnD)     Count(ColumnE) 
Italy        15 
Greece       15 
France       11 
+1

我不需要的信息,但是是我找ColumnD了。我只是用它作爲標識符來顯示結果顯示在另一列中。我在列中使用了逗號分隔的值,然後使用了該模式的使用次數值,但是我希望最終獲得類似於所有獨特位置在一列中的所需結果以及包含所有計數的總和那個地方在下一列。 – Tangy

+0

我希望國家名稱可能是'提供'的(使ColumnE更容易!),但是你很幸運,因爲@JPV提供了一個很好的答案,並且我確認了第一個公式作品(受你的表格沒有大數目,〜50k +,行)。 – pnuts

回答

3

假設你的數據開始第2行中,嘗試在D2:

=ArrayFormula({unique(trim(transpose(split(concatenate(A2:A&","),",")))),sumif(A2:A, "=*"&unique(trim(transpose(split(concatenate(A2:A&","),","))))&"*",B2:B)}) 

,或者:

=query(ArrayFormula({transpose(split(query(substitute(A2:A,",",""),,50000)," ")),transpose(split(concatenate(rept(B2:B&char(9), len(A2:A)-len(substitute(A2:A, ",",""))+1)),char(9)))}), "select Col1, sum(Col2) where Col1 <>'' group by Col1 label sum(Col2)'' ") 

另一種方法(學分AdamL這一個):

=ArrayFormula(QUERY(TRANSPOSE(SPLIT(QUERY(REPT(A2:A&", ",B2:B),,ROWS(A2:A)),", "))&{"",""},"select Col1, count(Col2) group by Col1 label count(Col2) ''",0)) 
+0

根據表格大小的不同,第一個版本可能會超出連接限制。 – pnuts

+0

@pnuts ..正確!我添加了一個替代方案......以防萬一! :-)如果兩者都不起作用,我們可以找出其他的東西.. – JPV

+0

很容易修復(我在隔離的'A'後插入'10') - 但是你永遠不能確定這個人問將意識到爲什麼直接複製和粘貼可能無法正常工作(還有'Frace')。雖然大公式,但+1,(如果不是我的'品味'),我會分裂兩列的要求,以便能夠使用更簡單的'= sumproduct( - (not(iserror(find(D2,A $ 2: A $ 4)))*(B $ 2:B $ 4)))'' – pnuts