ARRAYFORMULA在

时间:2016-09-11 17:06:23

标签: google-sheets

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

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

我列出了从Google表格中填写的所有客户。我想在第一行中仅使用arrayformula将Group列填充到每个客户端的组中。我想要的输出是:

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(名称<>"&#34 ;; IF(名称= TRANSPOSE(FILTER(客户端; LEN(客户端))); TRANSPOSE(FILTER(基; LEN(组))) ;);))

我使用" name"," client"和"组"作为根据列标题命名的范围。

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

2 个答案:

答案 0 :(得分:1)

除了Rubén的解决方案,还可以尝试

b1

注意:根据您的语言环境,您可能需要使用此公式:

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

答案 1 :(得分:0)

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

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

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

解释

QUERY连接用空格字符分隔它们的行值。上面的公式使用此功能来连接到目前为止由OP获得的结果,然后TRIM用于删除多余的空格,而SUBSTITUTE用逗号替换剩余的空格。