Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 带过滤器和内部连接的阵列公式_Google Sheets - Fatal编程技术网

Google sheets 带过滤器和内部连接的阵列公式

Google sheets 带过滤器和内部连接的阵列公式,google-sheets,Google Sheets,我有这样的桌子。在现实生活中,它将有超过1000行 Client | Group -------------- Merry | A Merry | C Susan | B Mike | C Susan | A Joe | A Tom | B Tom | C 客户群 -------------- 梅里 梅里 苏珊| B 迈克| C 苏珊| A 乔| A 汤姆| B 汤姆| C 我有所有客户的名单,这是从谷歌表格填写。我想用每个客户机的组填充Group列,只使用第一行中

我有这样的桌子。在现实生活中,它将有超过1000行

Client | Group -------------- Merry | A Merry | C Susan | B Mike | C Susan | A Joe | A Tom | B Tom | C 客户群 -------------- 梅里 梅里 苏珊| B 迈克| C 苏珊| A 乔| A 汤姆| B 汤姆| C 我有所有客户的名单,这是从谷歌表格填写。我想用每个客户机的组填充Group列,只使用第一行中的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 | | | | | | | | | 名称|组 ---------------- 乔| A 汤姆| B,C 迈克| C 梅里| A,C 苏珊| A,B 彼得| 我的最佳结果是:

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 | | | | | | | | | 名称|组| | | | | || ---------------------------------------------- 乔| | | | | | A || 汤姆| | | | | | B | C| 迈克| | | | | | | | || 梅里| A | C | | | | | || 苏珊| | | B | | A | || 彼得| | | | | | | || 看起来它符合我的要求,但我无法将所有这些列合并为一个。公式是:

=数组公式(IF(name“”;IF(name=TRANSPOSE(FILTER(client);LEN(client));TRANSPOSE(FILTER(group;LEN(group));)

根据列标题,我使用“name”、“client”和“group”作为命名范围

此处有样本表(仅限查看):

考虑到此时链接的电子表格上的
H3:O8
“最佳结果”

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

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


查询通过空格字符将行和值连接起来。上面的公式使用此功能连接OP到目前为止得到的结果,然后使用TRIM删除多余的空格,并使用替换以逗号替换剩余的空格

除了鲁本的解决方案,还可以尝试

=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 Sheet电子表格不同,只与view共享它,以确保读者能够看到原始电子表格。命名范围未在共享电子表格上设置。您的解决方案很棒,我可以将您的公式和我的公式结合起来,即使在大数据集上,也可以使用一个公式单元格获得所需的结果。如果组名本身有空格,是否有优雅的解决方法?在这种情况下,公式将用逗号替换每个空格。我可以在“附加”选项卡中为每个组名添加分隔符来解决此问题,但它太难看了,我甚至不想让您看到:)如果您的组名有空格,请使用&运算符连接分隔符。如果您需要进一步的详细信息,请将您的后续问题作为新问题发布。它的效果与我预期的一样,非常感谢!我的最后一个公式是:
=ArrayFormula(transpose(trim)(transpose)(transpose)(ArrayFormula)(IF(name)”;IF(name=transpose(filter(client;len(client));transpose(CHAR(10)&filter(group;len(group)););“select*”;ROWS(client(client);)))
谢谢JPV!你们的公式给了我一个很好的报告,但在我的情况下,Name列是常量,我只能触摸Groups列。如果这对你来说不难的话,你能告诉我在哪里可以阅读关于ARRAYFORMULA的高级用法吗。我找到了解决问题的方法,但仍然无法在ARRAYFORMULA中使用行或LEN函数。