ArrayFormula加入过滤器(Google Spreadsheets)

时间:2013-01-21 07:14:38

标签: google-sheets formulas array-formulas

我做了很长时间的搜索,无法找到我要找的东西。也许有人在那里可以帮忙吗?

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

=Join(" ",FILTER(Sheet1!B:B;Sheet1!A:A=A1))

在表1中是一个表:列A是名字(例如'詹姆斯'),列B是一些评论(例如'头痛')。詹姆斯(或任何其他人)可能有多行,每行都有不同的评论(例如詹姆斯有2行,一行说'头痛',另一行说'膝盖疼痛'。)

在表2的A列中,我有一个出现在Sheet1中的名称列表(使用'= UNIQUE'公式)。 A1说'詹姆斯'。在单元格B1中,我输入上面的公式。

结果几乎就是我想要的。它将詹姆斯的所有评论加入到一个单元格中,每个评论之间都有一个“空格”。因此,细胞B1的结果是:'头痛膝盖疼痛'。

但是,我必须将此公式拖到下面的所有单元格中。有没有人知道我怎么能像过去使用的所有其他ArrayFormulas一样,公式自动填充下面的所有单元格?我试过把它变成一个数组公式,但没有成功。

我也一直在玩这个配方,给我同样的结果'头痛膝盖疼痛',但配方仍然不会复制到下面的细胞中。

=SUBSTITUTE(Arrayformula(concatenate(FILTER(Sheet1!B:B;Sheet1!A:A=A1)&" "; "|"));" |";"")

如果有人知道如何实现这一目标,我将非常感激 - 非常感谢您的宝贵帮助。

感谢您的期待!

2 个答案:

答案 0 :(得分:2)

逐行应用聚合函数(如CONCATENATE)通常有点复杂。

=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)))))

(编辑:道歉我没有机会测试错误/拼写错误,如果你确认它有效,会删除这一行)

答案 1 :(得分:1)

我知道这个问题太旧了,但是要在删除行时解决问题需要将@Injectable() export class PouchSeed { constructor() { } normalizeDoc(doc, id) { var output = this.normalize(doc); // <-- note how you call your normalize method output._id = id || doc._id; output._rev = doc._rev; return output; } normalize(doc) { doc = angular.copy(doc); Object.keys(doc).forEach(function (prop) { var type = typeof doc[prop]; if (type === 'object') { doc[prop] = normalize(doc[prop]); } else if (type === 'function') { doc[prop] = doc[prop].toString(); } }); return doc; } .... } 更改为A:A ,所以,

filter(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)))))