合并 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|nominationname|(后者的提名是空白的)。

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