合并 Google 个工作表中的多个选项卡,并添加一个数据来源列

Merge multiple tabs in Google Sheets and add a column for where the data came from

我有一个电子表格,其中包含多个布局相似的选项卡。我想使用一个公式将它们合并到一个选项卡中,该选项卡有一个新列命名它来自的选项卡。

例子

选项卡:区域 A

| Item | Status      |
|------|-------------|
| Foo  | Blocked     |
| Bar  | In Progress |

选项卡:B区

| Item   | Status    |
|--------|-----------|
| Foobar | Completed |

选项卡:已合并

| Area | Item   | Status      |
|------|--------|-------------|
| A    | Foo    | Blocked     |
| A    | Bar    | In Progress |
| B    | Foobar | Completed   |

在没有新列的情况下合并

我可以在没有附加列的情况下合并数据,使用这个公式:

=ARRAYFORMULA(SORT({'Area A'!A2:B; 'Area B'!A2:B}))

看起来像这样:

|--------|-------------|
| Item   | Status      |
|--------|-------------|
| Foo    | Blocked     |
| Bar    | In Progress |
| Foobar | Completed   |

添加区域列

上面的公式缺少的是面积列的添加。这可以通过使用 vlookup 交叉引用每个选项卡中的项目并对其进行标记来实现。但这不是很有效,并且在本文档中重新计算一些更新已经很慢了。我希望这有大约。 40 个选项卡,总共 10,000 行要合并。

例如:

=IFS(NOT(ISERROR(VLOOKUP(B2,'Area A'!A:A,1,FALSE))), "A", NOT(ISERROR(VLOOKUP(B2,'Area B'!A:A,1,FALSE))), "B")

有更好的方法吗?

我想要这样的东西,但它不起作用,因为我添加的常量与它需要的行数不匹配:

=ARRAYFORMULA(SORT({{"A",'Area A'!A2:B}; {"B", 'Area B'!A2:B}}))

你可以借用空栏来做:

=ARRAYFORMULA(SORT({{'Area A'!X2:X&"A", 'Area A'!A2:B}; 
                    {'Area B'!X2:X&"B", 'Area B'!A2:B}}))

或者您可以将其添加到第一列然后拆分它:

=ARRAYFORMULA(QUERY(SORT({SPLIT(
 {"A♦"&'Area A'!A2:A; 
  "B♦"&'Area B'!A2:A}, "♦"), 
 {'Area A'!B2:B; 
  'Area B'!B2:B}}), "where Col2 is not null", 0))

参见: