合并 2 google 张公式
Combine 2 google sheets formula
我现在正在努力制作一个可以自动更新的数据库。问题是,原来的格式是这样的:
Name
List
List
List
List
Name 1
List 1
List 2
List 3
so on
Name 2
List 1
List 2
List 3
List 4
我想要的最终结果是这样的
Name
List
Name 1
List 1
Name 1
List 2
对于最终结果的第一列,我成功创建了它:=ARRAYFORMULA(Index(Flatten(Split(Rept(A2:A12&";",8),";"))))
第二列,我创建它:=Filter(flatten(B2:I12),Not(ISBLANK(Flatten(B2:I12))))
--> 我使用过滤器,因为有几个名字,但没有填满最大数量,所以我想过滤空白的。
问题是 如果可能的话,我想将两个公式合并为一个,这样我就可以一步完成,而不是两步。我已经探索过任何东西,但我被困住了。请提供帮助,如有任何反馈,我们将不胜感激。
尝试将以下公式放入空 two-column 范围的第 1 行(header 行):
=ArrayFormula({"Name","Nominee";QUERY(SPLIT(FLATTEN(FILTER(A2:A,A2:A<>"")&"|"&FILTER(B2:I,A2:A<>"")),"|"),"Select * WHERE Col2 Is Not Null")})
这将创建 header 和所有结果。
工作原理:
header的“姓名”和“被提名人”被指定为大括号内虚拟数组的第一行。如果您愿意,可以更改这些。分号的意思是“现在撞下一行并将其余的放在下面。”
FILTER(A2:A,A2:A<>"")&"|"&FILTER(B2:I,A2:A<>"")
所有 non-blank 名称连接到管道符号和所有指定(空白或非空白),其中该行的名称不为空。这将导致一个网格充满 name|nomination 或 name|(后者的提名是空白的)。
FLATTEN
将以上所有结果组成一列。
SPLIT
将在管道符号处拆分,在提名旁边留下一个名字,或者在空白旁边留下一个名字。
QUERY
将只保留第二列中获得提名的人。
如果您的原始数据来自表单,该表单将在 form-data 摄入量 sheet 中的数据范围的顶部或底部添加行。这可能会导致上述公式在每次将新行添加到最佳。如果最终是您的情况,请使用以下版本的公式(当然,请确保将 form-data 摄入量 sheet 的名称附加到所有范围):
=ArrayFormula(QUERY(IFERROR(IF(ROW(A:A)=1,{"Name","Nominee"},QUERY(IFERROR(SPLIT(FLATTEN(FILTER(A:A,A:A<>"")&"|"&FILTER(B:I,A:A<>"")),"|")),"Select * WHERE Col2 Is Not Null")),{"",""}),"Select * WHERE Col1 Is Not Null"))
我现在正在努力制作一个可以自动更新的数据库。问题是,原来的格式是这样的:
Name | List | List | List | List |
---|---|---|---|---|
Name 1 | List 1 | List 2 | List 3 | so on |
Name 2 | List 1 | List 2 | List 3 | List 4 |
我想要的最终结果是这样的
Name | List |
---|---|
Name 1 | List 1 |
Name 1 | List 2 |
对于最终结果的第一列,我成功创建了它:=ARRAYFORMULA(Index(Flatten(Split(Rept(A2:A12&";",8),";"))))
第二列,我创建它:=Filter(flatten(B2:I12),Not(ISBLANK(Flatten(B2:I12))))
--> 我使用过滤器,因为有几个名字,但没有填满最大数量,所以我想过滤空白的。
问题是 如果可能的话,我想将两个公式合并为一个,这样我就可以一步完成,而不是两步。我已经探索过任何东西,但我被困住了。请提供帮助,如有任何反馈,我们将不胜感激。
尝试将以下公式放入空 two-column 范围的第 1 行(header 行):
=ArrayFormula({"Name","Nominee";QUERY(SPLIT(FLATTEN(FILTER(A2:A,A2:A<>"")&"|"&FILTER(B2:I,A2:A<>"")),"|"),"Select * WHERE Col2 Is Not Null")})
这将创建 header 和所有结果。
工作原理:
header的“姓名”和“被提名人”被指定为大括号内虚拟数组的第一行。如果您愿意,可以更改这些。分号的意思是“现在撞下一行并将其余的放在下面。”
FILTER(A2:A,A2:A<>"")&"|"&FILTER(B2:I,A2:A<>"")
所有 non-blank 名称连接到管道符号和所有指定(空白或非空白),其中该行的名称不为空。这将导致一个网格充满 name|nomination 或 name|(后者的提名是空白的)。
FLATTEN
将以上所有结果组成一列。
SPLIT
将在管道符号处拆分,在提名旁边留下一个名字,或者在空白旁边留下一个名字。
QUERY
将只保留第二列中获得提名的人。
如果您的原始数据来自表单,该表单将在 form-data 摄入量 sheet 中的数据范围的顶部或底部添加行。这可能会导致上述公式在每次将新行添加到最佳。如果最终是您的情况,请使用以下版本的公式(当然,请确保将 form-data 摄入量 sheet 的名称附加到所有范围):
=ArrayFormula(QUERY(IFERROR(IF(ROW(A:A)=1,{"Name","Nominee"},QUERY(IFERROR(SPLIT(FLATTEN(FILTER(A:A,A:A<>"")&"|"&FILTER(B:I,A:A<>"")),"|")),"Select * WHERE Col2 Is Not Null")),{"",""}),"Select * WHERE Col1 Is Not Null"))