当我在谷歌电子表格中附加数组时,所有结果元素都不会呈现在单元格中。例如,如果我输入公式:
={{1,2,3}, {4,5,6}}
电子表格单元格中呈现的值是 1、4、5、6。关于为什么会发生这种情况的任何想法或替代方案?我更广泛的问题是将单独工作表中的行累积到另一个工作表中 - 我可以通过
={ImportRange(...), ImportRange(...)}
但同样的问题也很明显(缺少第一个数组中的第二个元素和更多元素)。
当我在谷歌电子表格中附加数组时,所有结果元素都不会呈现在单元格中。例如,如果我输入公式:
={{1,2,3}, {4,5,6}}
电子表格单元格中呈现的值是 1、4、5、6。关于为什么会发生这种情况的任何想法或替代方案?我更广泛的问题是将单独工作表中的行累积到另一个工作表中 - 我可以通过
={ImportRange(...), ImportRange(...)}
但同样的问题也很明显(缺少第一个数组中的第二个元素和更多元素)。
编辑(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 自定义函数选项)。
可以很容易地在 Google 电子表格中进行联合。例如:
={'Sheet1'!A2:A;'Sheet2'!A2:A;'Sheet3'!A2:A}
在 Google 文档帮助中查看更多信息:在 Google 表格中使用数组