2014-03-13 25 views
4

遷移到新的Google電子表格。我有一個結合了幾個陣列成一個陣列中的自定義公式新Google電子表格連結限制50000個字符

=TRANSPOSE(SPLIT(ARRAYFORMULA(CONCATENATE('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)))

這個公式適用於舊的谷歌電子表格完全正常,但在新的一個,它給了我一個「Error: Text result of CONCATENATE is longer than the limit of 50000 characters.

有沒有解決的辦法?我試過Array_Literal配方,但似乎無法讓它工作,這似乎是一個可能的解決方案。但看起來這個函數結合了數組而不是往下。

我已經試過:

=array_literal('Monthly link'!A10:A,'Monthly link'!R10:R,'Monthly link'!AG10:AG,'Monthly link'!AU10:AU)

回答

5

回首here,你也許可以嵌套連擊:

=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來合併這些值。

編輯

這是不完全的修復程序,但閱讀google documentation狀態,你可以去here創建一箇舊的電子表格。

EDIT 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))) 

這似乎錯誤是來自ARRAYFORMULA來了,有它擁有50000不CONCATENATECONCAT的限制。因此,我使用CONCAT來組合兩個不同的ARRAYFORMULA,這兩個數字都包含原始數據的一半。您可以繼續分割這些數據,直到甚至有需要時都只有一個數據集爲止。

編輯3

目前,我正在用JavaScript實現發現here功能。

您可以通過Tools->Script editor->Paste來測試它,然後運行它去Tools->Script Manager->organizeData->Run

我會繼續進行這項工作......這是目前沒有工作,但我靠近;)

EDIT 4

我完成了它!你可以看到它here。您需要使用上述說明(Tools->Script editor->Paste)創建一個新腳本,將其保存,然後您可以通過執行Tools->Script Manager->organizeData->Run從腳本編輯器窗口或電子表格運行它。

腳本所做的是從窗體獲取數據,將其放入要複製的數據中,然後它有一個奇怪的限制,它需要列中的一個字母才能複製它,因此它添加了一個所以腳本中的字母會填充「undefined」行。從那裏開始,所有的行都有「未定義」,所以數據可以複製到所有行中。

如果你想知道如何直接執行腳本進入細胞,你可以把:

=organizeData() 

它會調用自定義的功能!有關更多詳細信息,請參閱here

+0

我嘗試過了,不幸的是它沒有工作。 '錯誤:CONCAT的文本結果超過了50000個字符的限制。' – jason

+0

@ jason_can't_code嗯......你可以使用兩個不同的單元嗎? –

+0

你能詳細說一下嗎?我想我可以,但它不會是動態的。我怎麼知道從哪裏開始第二個單元? – jason

4

不知道這是否正常,但可能值得一試。有人在Google文檔幫助論壇上發佈了此信息。

/.../ 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)) 

這前提是你必須在列的數據,從第1行至行100000這將所有級聯的。我猜最大長度是100000個字符?

0

我的回答是另一類似Q,標記爲duplicete:

Text result of JOIN is longer than the limit of 50000 characters

我的解決方案是使用公式:

=query(joinSplit(A2:A, ";"), "select Col1, count(Col1) group by 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 

結果列:

A 
B 
C 
D 
D 
D 
E 
F 
A 
A 
G 
A 
B 
C