【问题标题】:How to create a filter formula as an arrayformula如何将过滤器公式创建为数组公式
【发布时间】:2019-06-25 22:03:58
【问题描述】:

我有多个依赖于这个公式的列。

我有一个例子,一个员工可以为同一个项目分配多个任务,我使用公式来合并行并添加导致相应行中额外行的值:

我首先执行= Unique(A3:D) 来提取列表,然后:

=IF($A3<>"",join(", ",filter(Sheet1!E$3:E,Sheet1!$A$3:$A=$G3)),"")

我怎样才能使它成为一个 ArrayFormula? 我是这样尝试的,但结果不正确:

=arrayformula(IF($A2:A<>"",join(", ",filter(Sheet1!E$2:E,Sheet1!$A$2:$A=$G2:G)),""))

这是一个示例电子表格: https://docs.google.com/spreadsheets/d/1cLXNidk6FSZbUeU0CK3XlMPWdpBMbnKMXC5gzTfMvY0/edit?usp=sharing

【问题讨论】:

  • @player0 添加。谢谢

标签: regex google-sheets google-sheets-formula array-formulas google-sheets-query


【解决方案1】:

一口气搞定:

=ARRAYFORMULA(SPLIT(REGEXREPLACE(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE({
 QUERY(QUERY(IF(A3:A<>"", {A3:A&"♦"&B3:B&"♦"&C3:C&"♦"&D3:D, E3:E}, ), 
 "select Col1,count(Col1) where Col1 is not null group by Col1 pivot Col2", 0),
 "select Col1 offset 1", 0),
 IF(QUERY(QUERY(IF(A3:A<>"", {A3:A&"♦"&B3:B&"♦"&C3:C&"♦"&D3:D, E3:E}, ), 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2", 0), "offset 1",0)<>"", 
 QUERY(QUERY(IF(A3:A<>"", {A3:A&"♦"&B3:B&"♦"&C3:C&"♦"&D3:D, "♦"&E3:E&","}, ), 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2", 0), "limit 0",1), )})
 ,,999^99))), ", ♦", ", "), ",$", ), "♦"))


仅列K

=QUERY(ARRAYFORMULA(SPLIT(REGEXREPLACE(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE({
 QUERY(QUERY(IF(A3:A<>"", {A3:A&"♦"&B3:B&"♦"&C3:C&"♦"&D3:D, E3:E}, ), 
 "select Col1,count(Col1) where Col1 is not null group by Col1 pivot Col2", 0),
 "select Col1 offset 1", 0),
 IF(QUERY(QUERY(IF(A3:A<>"", {A3:A&"♦"&B3:B&"♦"&C3:C&"♦"&D3:D, E3:E}, ), 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2", 0), "offset 1",0)<>"", 
 QUERY(QUERY(IF(A3:A<>"", {A3:A&"♦"&B3:B&"♦"&C3:C&"♦"&D3:D, "♦"&E3:E&","}, ), 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2", 0), "limit 0",1), )})
 ,,999^99))), ", ♦", ", "), ",$", ), "♦")), "select Col5", 0)

【讨论】:

  • 哇。嗯,我无法学习或尝试调整它。老实说,我不知道这有什么意义,但它确实有效,向你致敬 player0。我可以请你指出我在哪里修改它,以便我可以保留“独特”的公式吗?基本上,只需要替换 K 列中的连接和过滤函数,并留下“唯一”来完成其余的工作,因为查询会混淆数据类型,并且在我的实际示例中将某些列留空。
  • 同一个@player0。还是您的意思是包含真实数据的那个?那个有大约 100 列,中间有各种公式。我真的很想保留“唯一”公式,因为它非常简单,只需修改 K 列。
  • 是的,有真实数据的那个。好吧,真正的问题是,当您尝试此公式时,K 列是否应该正确显示或未正确显示。如果不是,则需要先编辑此公式,然后将其修剪为 K 列。如果是,那么我们只是修剪它,你很高兴
  • 是的。 K列的数据显示正确。即使在我的真实示例中,它也可以正确显示,但其他 100 列都没有,其中一些缺少数据,因为“查询”公式会自动检测数据类型。是的,我想修改你的公式,但我不确定是否要开始。对我来说,这一切看起来都一样,你执行相同的一组函数 3 次,我不知道如何根据我的需要修剪公式。
  • 从答案中尝试第二个效果