附加谷歌电子表格数组

Jas*_*son 5 arrays google-sheets google-sheets-formula

当我在谷歌电子表格中附加数组时,所有生成的元素都不会呈现在单元格中。例如,如果我输入公式:

={{1,2,3}, {4,5,6}}
Run Code Online (Sandbox Code Playgroud)

电子表格单元格中呈现的值为 1、4、5、6。关于为什么会发生这种情况的任何想法或替代方案?我更广泛的问题是将单独工作表中的行累积到另一张工作表中 - 我可以通过

={ImportRange(...), ImportRange(...)}
Run Code Online (Sandbox Code Playgroud)

但同样的问题也很明显(缺少第二个元素以及第一个数组之外的元素)。

Emi*_*lás 8

可以很容易地在 Google Spreadsheet 中建立并集。例如:

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

请参阅 Google 文档帮助中的更多信息:在 Google 表格中使用数组


Ada*_*amL 5

编辑(2014 年 10 月 2 日)

我刚刚在有人投票时发现了这一点。以下信息在最新版本的 Sheets 中已过时 - 您现在(几个月以来已经能够)在嵌入数组内连接数组。我在下面提供的所有示例都将起作用,包括我所说的“不应该起作用”的示例。


Google 表格中的嵌入数组

值数组可以由使用嵌入数组的单个函数填充。嵌入数组中的每个元素(这可能是猜测;这或多或少只是我的意见)代表将填充到工作表中的连续单元格中的值。分号是行分隔符;逗号(或区域设置中使用逗号作为小数分隔符的反斜杠)是列分隔符。因此,这将成功创建一个两行三列的数组(以下所有示例均假设区域设置支持逗号列分隔符):

={1,2,3;4,5,6}

嵌入式数组中的嵌入式数组

由于嵌入数组中的每个元素代表电子表格中的一个单元格,因此我认为可以合理地假设应该能够用另一个嵌入数组填充单元格,只要它不覆盖外部嵌入数组中的其他元素。所以在我看来,这样的事情应该(见第3点)是成功的:

={{1;2;3},{4;5;6}}

然而,这样的事情不应该工作(再次在我看来),因为第一个嵌入式数组的第二个和第三个元素将“覆盖”第二个嵌入式数组:

={{1,2,3},{4,5,6}}

存在与嵌入式数组内的第一个嵌入式数组相关的错误

正如 +Jason 指出的那样,类似的东西={{1;2;3},{4;5;6},{7;8;9}}不起作用,因为第一个嵌入数组仅填充一个元素(但所有其他列都正确填充)。同样有趣的是,一个元素会自动转换为文本字符串。(不幸的是)这是 Google 表格中长期存在的错误。当您尝试对数组调用 SPLIT() 函数时,也会发生同样的情况(数组中的每个元素都被成功分割,除了第一个元素)。

无论如何,我认为嵌入式数组中的嵌入式数组不会帮助解决您更广泛的问题

无论如何,嵌入式数组实际上不能用于将一个数组附加到另​​一个数组的末尾(由于“覆盖”效应),并且没有可以直接执行此操作的本机函数。您可以通过脚本库(归功于 +ahab)获得 VMERGE 函数,它可以开箱即用:

=VMERGE(ImportRange(...);ImportRange(...);...)

或者您可以使用本机函数进行一些字符串操作来实现此目的。例如,对于一维数组:

=ArrayFormula(TRANSPOSE(SPLIT(CONCATENATE(ImportRange("key1";"A1:A10")&CHAR(9);ImportRange("key2";"A1:A10")&CHAR(9));CHAR(9))))

但这种类型的公式不仅笨重且可读性差,而且对于大型数据集来说性能成本非常高(我倾向于优先推荐 VMERGE 自定义函数选项)。