合并列中的两个或多个 "lists"?

Merging two or more "lists" in columns?

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

示例:

A B C
D E
F
G H

应该变成:

A
B
C
D
E
F
G
H

而不是

A
D
F
G
B
E
H
C

我发现无数网站上有人在解释我如何将一个列表贴在前一个列表的末尾(如 "and not" 示例所示),但这恰恰是 不是 我在找什么。

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

Editable example sheet here.

示例公式

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

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

  • 流程如下

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

结果:

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

注:

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

参考文献:

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

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