Google sheets 数组用于计算联接中的筛选器(Google电子表格)

Google sheets 数组用于计算联接中的筛选器(Google电子表格),google-sheets,formulas,array-formulas,Google Sheets,Formulas,Array Formulas,我做了很长时间的搜索,找不到我要找的东西。也许有人能帮忙 我的谷歌电子表格中有这个公式(我将在下面解释它的作用): 在第1页中有一个表格:a列是名字(例如“James”),B列是一些注释(例如“头痛”)。詹姆斯(或任何其他人)可能有多行,每行都有不同的注释(例如,詹姆斯有两行,一行说“头痛”,另一行说“膝盖疼痛”) 在第2页A列中,我有一个出现在第1页中的名称列表(使用“=UNIQUE”公式)。A1写着“詹姆斯”。在单元格B1中,我输入上述公式 结果几乎正是我想要的。它将James的所有注释合并

我做了很长时间的搜索,找不到我要找的东西。也许有人能帮忙

我的谷歌电子表格中有这个公式(我将在下面解释它的作用):

在第1页中有一个表格:a列是名字(例如“James”),B列是一些注释(例如“头痛”)。詹姆斯(或任何其他人)可能有多行,每行都有不同的注释(例如,詹姆斯有两行,一行说“头痛”,另一行说“膝盖疼痛”)

在第2页A列中,我有一个出现在第1页中的名称列表(使用“=UNIQUE”公式)。A1写着“詹姆斯”。在单元格B1中,我输入上述公式

结果几乎正是我想要的。它将James的所有注释合并到一个单元格中,每个注释之间都有一个空格“”。因此B1细胞的结果是:“头痛膝盖疼痛”

但是,我必须将此公式拖到下面的所有单元格中。有人知道我如何能像我过去使用的所有其他数组公式一样,自动填充下面的所有单元格吗?我曾尝试将其作为数组公式,但没有成功

我也一直在玩这个公式,它给了我同样的结果“头痛膝盖疼痛”,但公式仍然不会复制到下面的细胞

=SUBSTITUTE(Arrayformula(concatenate(FILTER(Sheet1!B:B;Sheet1!A:A=A1)&" "; "|"));" |";"")
如果有人知道如何做到这一点,我将非常感激——你的宝贵帮助将不胜感激


谢谢你的关注

应用诸如逐行连接之类的聚合函数通常有点复杂

=ArrayFormula(TRIM(TRANSPOSE)(SPLIT(CONCATENATE)(REPT(TRANSPOSE)(Sheet1!B:B&“”);A:A=TRANSPOSE(Sheet1!A:A))&REPT(“&CHAR(9);TRANSPOSE(ROW(Sheet1!A:A))=ROWS(Sheet1!A:A));CHAR(9);


(编辑:抱歉,我没有机会测试错误/打字错误,如果你能确认它是否有效,我会删除这一行)

我知道这个问题太老了,但是要解决擦除一行时的问题,你需要将
a:a
更改为
过滤器(a:a,a:a“”)
所以

=ArrayFormula(TRIM(TRANSPOSE(SPLIT(CONCATENATE(REPT(TRANSPOSE(Sheet1!B:B&" ");A:A=TRANSPOSE(Sheet1!A:A))&REPT(" "&CHAR(9);TRANSPOSE(ROW(Sheet1!A:A))=ROWS(Sheet1!A:A)));CHAR(9)))))
变成:

=ArrayFormula(TRIM(TRANSPOSE(SPLIT(CONCATENATE(REPT(TRANSPOSE(Sheet1!B:B&" ");filter(A:A,A:A<>"")=TRANSPOSE(Sheet1!A:A))&REPT(" "&CHAR(9);TRANSPOSE(ROW(Sheet1!A:A))=ROWS(Sheet1!A:A)));CHAR(9)))))
=ArrayFormula(TRIM(TRANSPOSE)(SPLIT(CONCATENATE)(REPT(TRANSPOSE)(Sheet1!B:B&“”);filter(A:A“”)=TRANSPOSE(Sheet1!A:A))&REPT(“&CHAR(9);TRANSPOSE(ROW(Sheet1!A:A))=ROWS(Sheet1!A:A));CHAR(9);)

您好,您的配方非常有效,非常感谢。当我进行实验时,我意识到我可以使用这个公式:=Join(“,FILTER(Sheet1!B:B;Sheet1!A:A=A1)),但我仍然无法将其转换为数组公式。如果这是一个简单的数组公式,请让我知道。否则,你已经给出的公式是好的,不管怎样,我完全满意它-我只是好奇,如果使用连接公式会不会更简单!再次感谢。再次您好,不幸的是,您的公式没有我第一次想到的那么完美。它似乎工作正常,但当我从工作表1中删除一行时,公式失败了。它在整个列中返回“-”。你知道是什么导致了这个问题吗?谢谢
=ArrayFormula(TRIM(TRANSPOSE(SPLIT(CONCATENATE(REPT(TRANSPOSE(Sheet1!B:B&" ");filter(A:A,A:A<>"")=TRANSPOSE(Sheet1!A:A))&REPT(" "&CHAR(9);TRANSPOSE(ROW(Sheet1!A:A))=ROWS(Sheet1!A:A)));CHAR(9)))))