2016-09-11 31 views
1

我有这样的桌子。在现实生活中,它将有超过1000行。ARRAYFORMULA带过滤器和CONCATENATE里面

 
Client | Group 
-------------- 
Merry | A 
Merry | C 
Susan | B 
Mike | C 
Susan | A 
Joe | A 
Tom | B 
Tom | C 

而且我列出了所有从Google Form填充的客户端。我想在第一行中仅使用arrayformula来填充组列。我所需的输出是这样的:

 
Name | Groups 
---------------- 
Joe  | A 
Tom  | B, C 
Mike | C 
Merry | A, C 
Susan | A, B 
Peter | 

我的最好成绩又是这样的:

 
Name | Groups | | | | | | | | 
---------------------------------------------- 
Joe  |  | | | | | A | | | 
Tom  |  | | | | | | B | C | 
Mike |  | | | C | | | | | 
Merry | A | C | | | | | | | 
Susan |  | | B | | A | | | | 
Peter |  | | | | | | | | 

看起来它我想要做什么,但我不能将所有这些列连接成一个。公式为:

= ARRAYFORMULA(IF(名称<> “”; IF(名称= TRANSPOSE(FILTER(客户端; LEN(客户端))); TRANSPOSE(FILTER(基; LEN(组))); );))

根据列标题,我使用“名称”,“客户端”和“组”作为命名范围。

样纸是在这里(仅供查看): https://docs.google.com/spreadsheets/d/1VFnmyDTQhlCaANAvkzLgzKRKchPsGzFn4hDZYOoJF_M/edit?usp=sharing

+0

而不是共享与编辑谷歌的工作表的电子表格任何人的权限,只有分享它的观点,以确保读者将看到原来的电子表格。指定的范围未在共享电子表格中设置。 –

+0

您的解决方案非常棒,我可以将您的配方与我的配方结合起来,即使在大数据集中也可以使用一个配方单元获得所需的结果。如果组名有自己的空间,是否有优雅的解决方法?在这种情况下,您的公式用逗号替换每个空格。我可以解决它在其他选项卡中为每个组名添加分隔符,但它非常难看我不想让你看到它:) –

+0

如果您的组名称中有空格,请使用&运算符连接分隔符。如果您需要更多详细信息,请将您的后续问题作为新问题发布。 –

回答

0

考虑到“最好的结果”是H3:O8在此时链接的电子表格。

以下公式返回所需的结果:

=ArrayFormula(substitute(transpose(trim(query(transpose(H3:O8);"select *";ROWS(A:A))));" ";",")) 

说明

QUERY串接的行值由一个空格字符分隔。上面的公式使用这个特性来连接到目前为止由OP获得的结果,然后TRIM用于删除多余的空格,用SUBSTITUTE用逗号替换剩余的空格。

+0

它像我期望的那样工作,非常感谢你!我的最终公式是: '= ArrayFormula(转置(修剪(查询(转置(ArrayFormula(IF(名称=>转置(过滤器(客户端; len(客户端)));转置(CHAR 10)&filter(group; len(group))););)));“select *”; ROWS(client)))))' –

1

除了鲁本的解决方案,也尽量

=arrayformula(regexreplace({ unique(A3:A), trim(transpose(query(if((transpose(unique(A3:A)) = A3:A) * len(A3:A), B3:B & ",",), "select *", 50000))) }, ",$", "")) 

注:这取决于你语言环境,您可能需要使用这个公式来代替:

=arrayformula(regexreplace({ unique(A3:A)\ trim(transpose(query(if((transpose(unique(A3:A)) = A3:A) * len(A3:A); B3:B & ",";); "select *"; 50000))) }; ",$"; "")) 
+1

谢谢JPV!你的公式给了我很好的报告,但在我的情况下名称列是恒定的,我只能触摸组列。 如果你不难给你提供方向,我可以在哪里阅读有关ARRAYFORMULA的高级用法。我为我的问题找到了解决方案,但仍然无法围绕在ARRAYFORMULA中使用ROWS或LEN函数。 –