我有这样的 table 。在现实生活中,它将有 1000 多行。
客户 |团体
--------------
快乐 |一种
快乐 | C
苏珊 |乙
迈克 | C
苏珊 |一种
乔|一种
汤姆 |乙
汤姆 | C
我有从谷歌表单填写的所有客户的列表。我想在第一行中仅使用 arrayformula 用每个客户端的组填充 Group 列。我想要的输出是这样的:
姓名 |团体
----------------
乔|一种
汤姆 |乙、丙
迈克 | C
快乐 |甲、丙
苏珊 |甲、乙
彼得 |
我最好的结果是这样的:
姓名 |团体 | | | | | | | |
----------------------------------------------
乔| | | | | |一个 | | |
汤姆 | | | | | | |乙 | C |
迈克 | | | | C | | | | |
快乐 |一个 | C | | | | | | |
苏珊 | | |乙 | |一个 | | | |
彼得 | | | | | | | | |
看起来它做了我想要的,但我无法将所有这些列合并为一个。公式为:
=ArrayFormula(IF(name<>"";IF(name=TRANSPOSE(FILTER(client;LEN(client)));TRANSPOSE(FILTER(group;LEN(group))););))
我根据列标题使用“名称”、“客户端”和“组”作为命名范围。
sample 表在这里(仅查看):
https://docs.google.com/spreadsheets/d/1VFnmyDTQhlCaANAvkzLgzKRKchPsGzFn4hDZYOoJF_M/edit?usp=sharing
最佳答案
除了Rubén的解决方案,还可以尝试
=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) ) ) }; ",$"; "" ) )
关于google-sheets - ARRAYFORMULA 与 FILTER 和 CONCATENATE 内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39438569/