附加谷歌电子表格数组

时间:2013-04-13 08:01:44

标签: arrays google-sheets

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

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

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

来实现
={ImportRange(...), ImportRange(...)}

但同样的问题很明显(缺少第二个元素,超出第一个数组)。

2 个答案:

答案 0 :(得分:4)

编辑(2014年10月2日)

当有人投票时,我发生了这件事。以下信息在最新版本的Sheets中已经过时 - 您现在可以(已经能够使用几个月)在嵌入式数组中连接数组。我在下面提供的所有示例都可以使用,包括我说过的那个"不应该工作"。


Google表格中的嵌入式数组

可以使用嵌入式阵列通过单个函数填充值数组。嵌入数组中的每个元素(这可能是猜想点;或多或少只是我的观点)代表将填充在表中连续单元格中的值。分号是行分隔符;逗号(或使用逗号作为小数分隔符的区域设置中的反斜杠)是列分隔符。因此,这将成功创建一个两行,三列数组(以下所有示例都假定支持逗号列分隔符的语言环境):

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

嵌入式阵列中的嵌入式阵列

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

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

然而,这样的事情不应该起作用(再次是IMO),因为第一个嵌入式阵列的第二和第三个元素将是"覆盖"第二个嵌入式数组:

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

嵌入式阵列中的第一个嵌入式阵列存在错误

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

我认为嵌入式阵列中的嵌入式阵列无论如何都会帮助解决更广泛的问题

嵌入式数组实际上无法用于将一个数组附加到另​​一个数组的末尾(由于"覆盖"效果),并且没有可以直接执行的本机功能。您可以通过脚本库获得的VMERGE功能(信用卡+ ahab)将开箱即用:

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

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

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

但是除了笨重且不易阅读之外,这种类型的公式对于大型数据集而言性能非常昂贵(我倾向于推荐优先选择VMERGE自定义功能选项)。

答案 1 :(得分:1)

可以非常轻松地在Google电子表格中建立联盟。例如:

={'Sheet1'!A2:A;'Sheet2'!A2:A;'Sheet3'!A2:A}

在Google文档帮助中查看更多信息:Using arrays in Google Sheets