Google 工作表:用于汇总文本连接数组的数组公式 (query/filter...)
Google Sheets: Arrayformula for summarizing textjoined arrays (query/filter...)
我在 Google 工作表使用 Arrayformula 汇总单个单元格中一列的值时遇到问题。
我做了一个简单的例子,说明我的数据(大约)是什么样子以及我想如何总结它。
在表 1 中,您可以看到 project_members 填充在不同的项目中。
表 2 显示了我希望如何可视化我的数据。在 D 列中列出了唯一的 project_ids,到目前为止一切顺利。现在我希望 E 列显示我可以在他们旁边找到的项目中的每个成员。
[示例][1]
[1]: https://i.stack.imgur.com/1v1mk.png
我已经设法用这个得到了我想要的东西:
=TEXTJOIN(" , ";1;FILTER(B:B;A:A=D2))
或
=TEXTJOIN(" , ";1;QUERY(A:D;"Select B 其中 A 包含 '"& D2 &"' ";0))
现在我的实际数据集比这个例子大得多,而且数据还在不断增加。这就是为什么我需要将 E 列中的公式自动化。
我试过这个:
=ARRAYFORMULA(TEXTJOIN(" , ";1;QUERY(A:D;"Select B 其中 A 包含 '"& D:D &"' ";0)))
但这不起作用。
感谢您的帮助!
解决方案
试试这个将添加的行(德语表示法)考虑在内的独特数组公式
=ARRAY_CONSTRAIN( transpose({transpose(unique(A2:A));arrayformula(trim(query(arrayformula(if(A2:A=transpose(unique(A2:A));B2:B&",";));;9^9)))});counta(unique(A2:A));2)
施工说明
最重要的一步是在 D2(美国表示法)=arrayformula(if(A2:A10=transpose(unique(A2:A10)),B2:B10,))
,然后应用查询(,9*9) 来收集每列中的所有项目
查看我新添加的 sheet(“Erik Help”)和这个公式:
=ArrayFormula({A1:B1;REGEXREPLACE(TRIM(SPLIT(FLATTEN(QUERY(QUERY({A2:A&"~"\B2:B&","}; "Select MAX(Col2) where Col2 IS NOT NULL GROUP BY Col2 PIVOT Col1");; 9^9));"~"));"[,\s]+$";"")})
这个公式比较复杂,请有兴趣的朋友拆开再组合起来理解。
我在 Google 工作表使用 Arrayformula 汇总单个单元格中一列的值时遇到问题。
我做了一个简单的例子,说明我的数据(大约)是什么样子以及我想如何总结它。 在表 1 中,您可以看到 project_members 填充在不同的项目中。 表 2 显示了我希望如何可视化我的数据。在 D 列中列出了唯一的 project_ids,到目前为止一切顺利。现在我希望 E 列显示我可以在他们旁边找到的项目中的每个成员。
[示例][1] [1]: https://i.stack.imgur.com/1v1mk.png
我已经设法用这个得到了我想要的东西:
=TEXTJOIN(" , ";1;FILTER(B:B;A:A=D2))
或
=TEXTJOIN(" , ";1;QUERY(A:D;"Select B 其中 A 包含 '"& D2 &"' ";0))
现在我的实际数据集比这个例子大得多,而且数据还在不断增加。这就是为什么我需要将 E 列中的公式自动化。 我试过这个:
=ARRAYFORMULA(TEXTJOIN(" , ";1;QUERY(A:D;"Select B 其中 A 包含 '"& D:D &"' ";0)))
但这不起作用。 感谢您的帮助!
解决方案
试试这个将添加的行(德语表示法)考虑在内的独特数组公式
=ARRAY_CONSTRAIN( transpose({transpose(unique(A2:A));arrayformula(trim(query(arrayformula(if(A2:A=transpose(unique(A2:A));B2:B&",";));;9^9)))});counta(unique(A2:A));2)
施工说明
最重要的一步是在 D2(美国表示法)=arrayformula(if(A2:A10=transpose(unique(A2:A10)),B2:B10,))
,然后应用查询(,9*9) 来收集每列中的所有项目
查看我新添加的 sheet(“Erik Help”)和这个公式:
=ArrayFormula({A1:B1;REGEXREPLACE(TRIM(SPLIT(FLATTEN(QUERY(QUERY({A2:A&"~"\B2:B&","}; "Select MAX(Col2) where Col2 IS NOT NULL GROUP BY Col2 PIVOT Col1");; 9^9));"~"));"[,\s]+$";"")})
这个公式比较复杂,请有兴趣的朋友拆开再组合起来理解。