【问题标题】:Merging two or more "lists" in columns?合并列中的两个或多个“列表”?
【发布时间】:2020-04-02 00:21:34
【问题描述】:

试图找到一种方法来合并多个列表,同时保留项目的顺序,从右到左,然后从上到下。

例子:

A B C
D E
F
G H

应该变成:

A
B
C
D
E
F
G
H

而不是

A
D
F
G
B
E
H
C

我发现无数网站上都有人解释我如何将一个列表粘贴到前一个列表的末尾(如“而不是”示例中所示),但这正是我不是正在寻找。

潜在的重复条目无关紧要。

Editable example sheet here.

【问题讨论】:

    标签: arrays google-sheets split array-formulas textjoin


    【解决方案1】:

    示例公式

    =TRANSPOSE(SPLIT(TEXTJOIN(",",TRUE,A3:C28),","))
    
    • 在这种情况下,您的共享电子表格将用作示例值。

    • 从您共享电子表格中的“所需输出”中,我认为您正在使用“A3:C28”的范围。如果要使用“A3:C29”的范围,请修改上面的公式。

    • 流程如下。

      1. 使用TEXTJOIN 将所有值转换为字符串。
        • 在这种情况下,, 用作分隔符。如果值中包含,,请更改此项。
      2. 使用SPLIT 拆分字符串值以放入每个单元格。
      3. 使用TRANSPOSE 转置该值。

    结果:

    在此示例中,公式被放入单元格“F3”中。

    注意:

    • 如果要删除重复的值,请使用UNIQUE,如=UNIQUE(TRANSPOSE(SPLIT(TEXTJOIN(",",TRUE,A3:C28),",")))。

    参考资料:

    【讨论】:

    • 就是这样,完美,谢谢!对此有点疯狂,每次都必须手动完成。
    • @DeBedenHasen 感谢您的回复。很高兴您的问题得到解决。
    【解决方案2】:

    虽然之前的答案可能适用于小型数据集:

    =TRANSPOSE(SPLIT(TEXTJOIN("♦", 1, G3:I), "♦"))
    


    如果你有巨大的数据集并且 textjoin 会输出限制错误,你可以使用这种无限的方法:

    =INDEX(QUERY(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
     IF(G3:G="",,"♦"&G3:I&"♦")),,99^99)),,99^99), "♦")),
     "where not Col1 starts with ' '", 0),,1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2016-10-14
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多