如何在谷歌电子表格中联合范围

con*_*rpw 45 google-sheets google-apps-script

我想从任何谷歌电子表格联合范围.

这个例子

!工作表Sheet1 A:

{12, 131, 45}
Run Code Online (Sandbox Code Playgroud)

!Sheet2中A:

{12, 131, 46}
Run Code Online (Sandbox Code Playgroud)

未知的功能

=formula_for_union_range(Sheet1!A:A; Sheet2!:A:A)
Run Code Online (Sandbox Code Playgroud)

应该回来

{12, 131, 45, 12, 131, 46}
Run Code Online (Sandbox Code Playgroud)

这个问题

这怎么可能?

Pas*_*udy 63

您可以将它们合并为1列,然后获取唯一值.检查以下公式:

=UNIQUE({Sheet1!A:A;Sheet2!A:A})
Run Code Online (Sandbox Code Playgroud)

  • 我不确定为什么这个答案的票数少于恩里克的票数.这似乎是正确的方法 - 使用纯矩阵符号 - 而另一个答案似乎有完全不必要的文本分割/连接命令,这将减慢很多事情,如果涉及的单元格有逗号或分号,则会爆炸. (5认同)
  • OP不想要独特的价值观(`{12,131,45,12,131,46}`) (3认同)
  • @Moseleyi:您可能做过与我相同的事情:使用逗号而不是分号。使用逗号,您将获得三列。使用分号时,范围是并集的。 (3认同)
  • 如果你有多列 - 为什么它彼此相邻?我用它从三张纸上拉出三根柱子并没有加入它们只是把它们放在另一张旁边? (2认同)

mik*_*mik 52

只需使用:

={sheet1!a:a; sheet2!a:a}
Run Code Online (Sandbox Code Playgroud)

  • 这是最简单的答案.令人惊讶的是,使用union这种方式甚至适用于命名范围,具有多个列的范围和VLOOKUP公式. (2认同)

Hen*_*reu 21

虽然脚本可以轻松完成此操作,但我建议使用常规电子表格公式,例如

=transpose(split(join(";";Sheet1!A:A)&";"&join(";";Sheet2!A:A);";"))
Run Code Online (Sandbox Code Playgroud)

要删除重复项,只需将其包装在unique公式中:

=unique(transpose(...))
Run Code Online (Sandbox Code Playgroud)

并排序...... =sort(...)

  • 这很奇怪。将单元格加入一个大字符串只是为了将其拆分并不是很有效。请参阅下文以获得更好的答案。 (2认同)

con*_*rpw 13

Google Apps脚本

然而问题是关于剧本.我仍然成功使用以下代码:

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

电子表格功能

但是,如上所述,使用{}-notation 更容易.

垂直连接

={Range(Cols=N);Range(Cols=N)}
Run Code Online (Sandbox Code Playgroud)

水平串联

={Range(Row=M),Range(Rows=M)}
Run Code Online (Sandbox Code Playgroud)

可以结合起来

={{,,};{,,}}
Run Code Online (Sandbox Code Playgroud)

或者更难的事情

={{;;},{;;}};{{;;},{;;}};{{;;},{;;}}
Run Code Online (Sandbox Code Playgroud)

参数分隔符的区域设置依赖项

如果您当前的语言环境支持,作为参数分隔符,则应该;用于垂直连接和,水平连接.

否则你的参数分隔符是;,你必须分别使用;\(没有空格).

'Data 1'!A1:C20

|   Name  |    Date   | Sum |
| Ethan   |  3/4/2017 |  31 |
| Logan   |  3/6/2017 |  62 |
| Brian   | 3/26/2017 |  61 |
|   ...   |     ...   | ... |
Run Code Online (Sandbox Code Playgroud)

'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 |
|   ...   |     ...   | ... |
Run Code Online (Sandbox Code Playgroud)

级联

垂直连接

={'Data 1'!A1:C20;'Data 2'!A2:C20}
Run Code Online (Sandbox Code Playgroud) 结果
|  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 |
| ...    |       ... | ... |
Run Code Online (Sandbox Code Playgroud)

水平串联

={TRANSPOSE('Data 1'!A1:C20),TRANSPOSE('Data 2'!A2:C20)}
Run Code Online (Sandbox Code Playgroud) 结果
| 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 |
Run Code Online (Sandbox Code Playgroud)

有关此内容的更多信息如何在Google电子表格中连接范围