我想合并任何 Google 电子表格中的范围。
这个例子
表 1!A:A
{12, 131, 45}
表 2!A:A
{12, 131, 46}
未知功能
=formula_for_union_range(Sheet1!A:A; Sheet2!:A:A)
应该返回
{12, 131, 45, 12, 131, 46}
问题
这怎么可能?
我想合并任何 Google 电子表格中的范围。
表 1!A:A
{12, 131, 45}
表 2!A:A
{12, 131, 46}
未知功能
=formula_for_union_range(Sheet1!A:A; Sheet2!:A:A)
应该返回
{12, 131, 45, 12, 131, 46}
这怎么可能?
只需使用:
={sheet1!a:a; sheet2!a:a}
您可以将它们合并到 1 列中,然后获取唯一值。检查以下公式:
=UNIQUE({Sheet1!A:A;Sheet2!A:A})
然而问题是关于剧本的。我仍然成功使用以下代码:
function unionRanges(e) {
var result = [];
var length = 0;
var i = 0;
try {
for (i = 0; i < arguments.length; i++)
length += arguments[i].length;
if (length > 3000) return '#BIGRANGE';
for (var i = 0; i < arguments.length; i++)
result = result.concat(arguments[i].filter(function (el) {
return el.join('').length > 0
}));
return result;
} catch (err) {
return JSON.stringify(err);
}
}
但是,如上所述,使用{}
-notation 更容易。
={ Sheet1!A1:C10 ; Sheet2!A1:C34 }
垂直串联
={ Range(Cols=N) ; Range(Cols=N) }
水平串联
={ Range(Rows=M) , Range(Rows=M) }
可以结合
={ { , , } ; { , , } }
或者更难的东西
={{{;;},{;;}};{{;;},{;;}};{{;;},{;;}}}
尝试这样的事情
={
{{ 1; 2; 3},{ 4; 5; 6}};
{{ 7; 8; 9},{10;11;12}};
{{13;14;15},{16;17;18}}
}
不需要内部水平连接
={
{ 1; 2; 3},{ 4; 5; 6};
{ 7; 8; 9},{10;11;12};
{13;14;15},{16;17;18}
}
如果您当前的语言环境支持,
作为参数分隔符,那么您应该将;
其用于垂直连接和,
水平连接。
否则,您的参数分隔符是;
并且您必须分别使用;
and \
(不带空格)。
'Data 1'!A1:C20
| Name | Date | Sum |
| Ethan | 3/4/2017 | 31 |
| Logan | 3/6/2017 | 62 |
| Brian | 3/26/2017 | 61 |
| ... | ... | ... |
'Data 2'!A1:C20
| Name | Date | Sum |
| Nathan | 3/30/2017 | 53 |
| Alyssa | 3/13/2017 | 72 |
| John | 3/24/2017 | 79 |
| Megan | 3/16/2017 | 10 |
| ... | ... | ... |
={'Data 1'!A1:C20;'Data 2'!A2:C20}
| Name | Date | Sum |
| Ethan | 3/4/2017 | 31 |
| Logan | 3/6/2017 | 62 |
| Brian | 3/26/2017 | 61 |
| ... | ... | ... |
| Nathan | 3/30/2017 | 53 |
| Alyssa | 3/13/2017 | 72 |
| John | 3/24/2017 | 79 |
| ... | ... | ... |
={TRANSPOSE('Data 1'!A1:C20),TRANSPOSE('Data 2'!A2:C20)}
| Name | Ethan | Logan | Brian | ... | Nathan | Alyssa | John |
| Date | 3/4/2017 | 3/6/2017 | 3/26/2017 | ... | 3/30/2017 | 3/13/2017 | 3/24/2017 |
| Sum | 31 | 62 | 61 | ... | 53 | 72 | 79 |
更多关于如何连接谷歌电子表格中的范围
虽然脚本可以轻松做到这一点,但我建议使用常规电子表格公式,例如
=transpose(split(join(";";Sheet1!A:A)&";"&join(";";Sheet2!A:A);";"))
要删除重复项,只需将其包装在一个unique
公式中:
=unique(transpose(...))
并排序...=sort(...)
起初,当我尝试时={Sheet1!A:A; Sheet2!A:A}
,我认为它不起作用,因为我只能从第一张纸上看到结果。原来它也包括所有空白单元格!
要过滤掉空白和空单元格,同时保留重复项(不像=UNIQUE
)并且不重复自己(不像=FILTER()
),您可以使用 =QUERY()
,如下所示:
=QUERY(
{March!A1:Z; April!A2:Z; May!A2:Z},
"select * where Col1 != '' and Col1 is not null",
0)
(请注意,我包括第一张表中的标题行,并从其他表中省略它)。
如果您的工作表不包含带有空文本的单元格,则可以省略Col1 != '' and
.
如果要合并工作表并排除包含空单元格的行,请在公式中使用FILTER函数:
=FILTER({Sheet1!A:A;Sheet2!A:A}, {Sheet1!A:A;Sheet2!A:A}<>"")
假设你有:
A B C D E F
1: 1 2 3 4 5 6
可以将切片连接为行或列。
对于其他列(同一行),请使用逗号。={$A1:$C1,$D1:$F1}
产量:
1 2 3 4 5 6
对于其他行(相同列),请使用分号。={$A1:$C1;$D1:$F1}
产量:
1 2 3
4 5 6