【问题标题】:Combine 2 google sheets formula结合2个谷歌表格公式
【发布时间】:2021-03-16 17:19:29
【问题描述】:

我现在正在制作一个可以自动更新的数据库。问题是,原来的格式是这样的:

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)))) --> 我使用过滤器,因为有几个名称,但没有填写到最大数量,所以我想过滤空白的。

问题是如果可能的话,我想将两个公式合二为一,这样我就可以一步完成,而不是两个。我已经探索过任何东西,但我被困住了。请提供帮助,我们将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    尝试将以下公式放入原本为空的两列范围的第 1 行(标题行):

    =ArrayFormula({"Name","Nominee";QUERY(SPLIT(FLATTEN(FILTER(A2:A,A2:A<>"")&"|"&FILTER(B2:I,A2:A<>"")),"|"),"Select * WHERE Col2 Is Not Null")})

    这会创建标题和所有结果。

    工作原理:

    标题“Name”和“Nominee”被指定为大括号内虚拟数组的第一行。如果您愿意,可以更改这些。分号的意思是“现在向下移动一行并将其余的放在下面。”

    FILTER(A2:A,A2:A<>"")&"|"&FILTER(B2:I,A2:A<>"")

    所有非空白名称都连接到管道符号和该行名称不为空白的所有提名(无论是否为空白)。这将导致网格填充 name|nominationname|(后者的提名为空白)。

    FLATTEN 将从上述所有结果中形成一列。

    SPLIT 将在管道符号处拆分它,在提名旁边留下名字,或者在空白旁边留下名字。

    QUERY 将只保留那些在第二列中获得提名的人。


    如果您的原始数据来自表单,则该表单将在表单数据摄入表中数据范围的顶部或底部添加行。这可能会导致上述公式在每次将新行添加到顶部时不断调整 A2:AB2:I 范围。如果您的情况最终属于这种情况,请使用以下版本的公式(当然,请确保将表单数据摄入表的名称附加到所有范围):

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

    【讨论】:

    • 这很神奇!非常感谢,非常感谢您的帮助!
    • 乐于助人。您现在可以花点时间将过去标记为“最佳答案”吗?此步骤允许其他贡献者从主仪表板一目了然地看到已解决的问题,同时也使未来的站点访问者更容易找到最相关的答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-05-03
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2020-09-09
    • 2019-02-17
    相关资源
    最近更新 更多