Google sheets 新谷歌电子表格连接限制50000个字符
迁移到新的谷歌电子表格。我有一个自定义公式,它将几个数组组合成一个数组Google sheets 新谷歌电子表格连接限制50000个字符,google-sheets,Google Sheets,迁移到新的谷歌电子表格。我有一个自定义公式,它将几个数组组合成一个数组 =转置(拆分(数组格式(串联('Monthly link'!A10:A&CHAR(13),'Monthly link'!R10:R&CHAR(13),'Monthly link'!AG10:AG&CHAR(13),'Monthly link'!AU10:AU&CHAR(13)),CHAR(13)) 这个公式在旧的谷歌电子表格中运行得非常好,但在新的电子表格中,它给了我一个“错误:连接的文本结果超过了50000个字符的限制。”
=转置(拆分(数组格式(串联('Monthly link'!A10:A&CHAR(13),'Monthly link'!R10:R&CHAR(13),'Monthly link'!AG10:AG&CHAR(13),'Monthly link'!AU10:AU&CHAR(13)),CHAR(13))
这个公式在旧的谷歌电子表格中运行得非常好,但在新的电子表格中,它给了我一个“错误:连接的文本结果超过了50000个字符的限制。
”
有办法解决这个问题吗?我尝试了Array\u Literal
公式,但似乎无法使其发挥作用,这似乎是一个可行的解决方案。但该函数似乎将数组组合在一起,而不是组合在一起
我试过:
=array\u literal('Monthly link'!A10:A,'Monthly link'!R10:R,'Monthly link'!AG10:AG,'Monthly link'!AU10:AU)
回顾过去,您可能可以嵌套连接:
=TRANSPOSE(SPLIT(ARRAYFORMULA(CONCAT(CONCATENATE('Monthly link'!A10:A&CHAR(13) ,
'Monthly link'!R10:R&CHAR(13)), CONCATENATE('Monthly link'!AG10:AG&CHAR(13) ,
'Monthly link'!AU10:AU&CHAR(13)) )), CHAR(13)))
我只需再添加一个CONCATENATE
来组合字符串和一个值,然后使用CONCAT
来组合这些值
编辑
这并不是一个确切的解决方案,但reading声明您可以通过以下方式创建一个旧的电子表格
编辑2
请尝试以下代码:
=TRANSPOSE(SPLIT(CONCAT(ARRAYFORMULA(CONCATENATE('Monthly link'!A10:A&CHAR(13),
'Monthly link'!R10:R&CHAR(13))), ARRAYFORMULA(CONCATENATE(
'Monthly link'!AG10:AG&CHAR(13), 'Monthly link'!AU10:AU&CHAR(13)))), CHAR(13)))
错误似乎来自于数组FORMULA
,限制为50000。不连接
或连接
。因此,我使用CONCAT
将两个不同的ARRAYFORMULA
s组合起来,这两个数组都包含了原始数据的一半。您可以继续分割这些数据集,直到有4个ARRAYFORMULA
s,如果需要,它们都只有一个数据集
编辑3
目前,我正在用javascript实现一个函数
您可以通过Tools->Script editor->Paste
当前对其进行测试,然后运行它到Tools->Script Manager->organizeData->run
我会继续努力的。。。它目前不起作用,但我很接近;)
编辑4
我完成了!你可以看到。您需要使用上述说明创建一个新脚本(Tools->script editor->Paste
),保存它,然后您可以从脚本编辑器窗口或通过执行Tools->script Manager->organizeData->run
从电子表格运行它
脚本所做的是从表单中获取数据,将其放入要复制的数据中,然后它有一个奇怪的限制,要求列中有一个字母才能复制它,因此它添加了一个字母,以便脚本用“未定义”填充行。从这里开始,所有行中都有“未定义”的行,因此可以将数据复制到所有行中
如果您想知道如何将脚本直接实现到单元格中,您可以将:
=organizeData()
它将调用自定义函数!有关更多详细信息,请参阅。不知道这是否有效,但可能值得一试。有人在谷歌文档帮助论坛上发布了这篇文章
/.../ If you want more than 50,000 characters in a single cell, you can use QUERY's header clause.
Example:
=ArrayFormula(query(row(A1:A70000),,100000))
This creates a cell with 408,893 characters. You can verify by using the LEN function.
好的,我这样修正了上面的一行,我认为它是有效的:
=ArrayFormula(query(A1:A100000,,100000))
前提是A列中有从第1行到第100000行的数据。它将连接所有这些。我猜最大长度是100000个字符?我的答案与另一个类似的Q有关,标记为duplicete: 我的解决方案是使用以下公式:
=query(joinSplit(A2:A,“;”),选择Col1,按Col1计数(Col1)分组,0)
其中,joinSplit(A2:A,“;”)
是一个自定义公式
要粘贴到脚本编辑器中的代码是:
function joinSplit(column, delim)
{
var result = [];
var row = [];
for (var i = 0, l = column.length; i < l; i++)
{
row = column[i].join(delim).split(delim);
row.forEach( function(elt) { result.push([elt]); } );
}
return result;
}
结果是列:
A
B
C
D
D
D
E
F
A
A
G
A
B
C
我试过了,但不幸的是没用<代码>错误:CONCAT的文本结果超过50000个字符的限制。@jason\u can't\u code Hmmmm。。。你能用两个不同的单元格吗?你能详细说明一下吗?我想我可以,但它不会是动态的。我怎么知道从哪里开始第二个细胞?@jason\u不能\u编码好点。。。我将检查这些函数的文档。。。我认为可能会自动插入换行符,这样您就可以有效地将字符数增加一倍。是的,这个函数基本上是将多个数据库连接到一个数据库中的一种变通方法,因为
QUERY
函数中没有JOIN()
函数。这是犹太人区,但很管用。谢谢,这个把戏对我很有吸引力。我试着测试长度限制,它对4035566个字符有效。当我停止测试的时候,可能会更多。
A
B
C
D
D
D
E
F
A
A
G
A
B
C