4

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

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

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

={ImportRange(...), ImportRange(...)}

但同样的问题也很明显(缺少第一个数组中的第二个元素和更多元素)。

4

2 回答 2

4

编辑(2014 年 10 月 2 日)

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


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}}第一个嵌入式数组仅填充一个元素(但每隔一列都正确填充)是行不通的。有趣的是,一个元素会自动转换为文本字符串。这是(不幸的是)谷歌表格中的一个长期存在的错误。当您尝试在数组上调用 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 自定义函数选项)。

于 2013-04-14T10:49:05.330 回答
2

可以很容易地在 Google 电子表格中进行联合。例如:

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

在 Google 文档帮助中查看更多信息:在 Google 表格中使用数组

于 2016-08-04T12:39:50.783 回答