google-sheets - ARRAYFORMULA 与 FILTER 和 CONCATENATE 内部

标签 google-sheets

我有这样的 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/

相关文章:

javascript - 将特定颜色的每个选项卡移至单独的工作簿

reactjs - React JS 和 Google 电子表格 : Cannot Read Property '2' of Null

google-apps-script - 从工作表中自动填充 Google 文档的当前日期

javascript - 如果名称在列中,则将该列转换为日期格式 Google 表格

javascript - 比较 JavaScript 中的两个日期(字符串)不起作用

google-sheets - 如何使用 Google Spreadsheet API 在电子表格文件中插入超链接

ruby - 作为 Google Apps 管理员,如何使用 Ruby 为用户创建 Google 电子表格?

javascript - 左侧赋值无效。 (第 1 行,文件 "Code") - Google Apps 脚本

date - Google 表格查询以选择记录 >= 可变日期

javascript - 迭代Google电子表格自定义函数中的单元格