合并 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))
参见:
我有一个电子表格,其中包含多个布局相似的选项卡。我想使用一个公式将它们合并到一个选项卡中,该选项卡有一个新列命名它来自的选项卡。
例子
选项卡:区域 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))
参见: