2015-04-14 48 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