2016-06-09 76 views
3

如何使用Google App腳本合併Google Spreadsheet中的多個標籤?所有選項卡中的數據不斷變化。如何使用Google App腳本合併Google Spreadsheet中的多個標籤?

例如,我在Google電子表格中有'Sheet1','Sheet2'和'Sheet3'。所有這些表中的數據都有3列 - 姓名和電子郵件ID &地區。現在,我想將這3張/標籤中存在的數據合併/組合成第四張,即具有相同列(名稱,電子郵件ID &地區)的「工作表4」。第四張紙應該有數據 - Sheet1的數據,然後Sheet2和Sheet3。所有3張中的行數不斷變化。

+0

例如,我在Google電子表格中有'Sheet1','Sheet2'和'Sheet3'。所有這些表中的數據都有3列 - 姓名和電子郵件地址。現在,我想將這3張/標籤中存在的數據合併/組合成第四張,即具有相同列(姓名,電子郵件地址和地區)的「工作表4」。第四張紙應該有數據 - Sheet1的數據,然後Sheet2和Sheet3。所有3張中的行數不斷變化。 – aks

回答

5
= filter({{Sheet1!A1:C500};{Sheet2!A1:C500};{Sheet3!A1:C500}},{{Sheet1!A1:A500};{Sheet2!A1:A500};{Sheet3!A1:A500}}<>"") 

我還沒有測試過這個。它只是作爲一種可能的解決方案突然出現在我的頭上。我不會爲此使用腳本;工作表的公式要快得多,至少在大多數時候,YMMV。 確保使用分號分隔頁面部分,否則它將無法工作。分號是數組文字的End_Of_Row運算符。

如果你真的想用一個腳本...

function combineSheets() { 
    var sApp = SpreadsheetApp.getActiveSpreadsheet(); 
    var s1= sApp.getSheetByName("Sheet1"); 
    var s2= sApp.getSheetByName("Sheet2"); 
    var s3= sApp.getSheetByName("Sheet3"); 
    var s4= sApp.getSheetByName("Sheet4"); 
    // If Sheet4 doesn't exist you'll need to create it here. 

    var s1values = s1.getRange(1,1,s1.getLastRow(),3).getValues(); 
    var s2values = s2.getRange(1,1,s2.getLastRow(),3).getValues(); 
    var s3values = s3.getRange(1,1,s3.getLastRow(),3).getValues(); 

    // Now, we can put out all together and stuff it in Sheet4 
    var s4values = []; 
    s4values = s1values.concat(s2values,s3values); 
    s4.getRange(1,1,s4values.length,3).setValues(s4values); 
} 
+0

該公式返回錯誤。 –

+0

我修復了代碼,因此它實際上是使用我創建的通用電子表格運行的,三張表單中只是填充了隨機數字,還有一張空白表格。您需要修改它以適合您自己的用例。 – HardScale

+0

@soyp有正確的想法,只需檢查每行的第一列。我使用一個過濾器來掃描組合數組中的空白A1值,湯姆使用len()函數來查找每個工作表中的行數,然後將它們合併。哪種方式更好或更快取決於你的上下文。 – HardScale

2

您不需要爲此的腳本。在第四片材,在A2輸入以下公式:

={filter(Sheet1!A2:C, len(Sheet1!A2:A)); filter(Sheet2!A2:C, len(Sheet2!A2:A)); filter(Sheet3!A2:C, len(Sheet3!A2:A))} 

它返回列A-C,其中在列A中的條目不爲空,並堆疊在它們一個陣列的內容。

0

我做了一個會做九個選項卡的整合,更多的行和列。

=filter({{Sheet1!A1:Q500};{Sheet2!A1:Q500};{Sheet3!A1:Q500};{Sheet4!A1:Q500};{Sheet5!A1:Q500};{Sheet6!A1:Q500};{Sheet7!A1:Q500};{Sheet8!A1:Q500};{Sheet9!A1:Q500}},{{Sheet1!A1:A500};{Sheet2!A1:A500};{Sheet3!A1:A500};{Sheet4!A1:A500};{Sheet5!A1:A500};{Sheet6!A1:A500};{Sheet7!A1:A500};{Sheet8!A1:A500};{Sheet9!A1:A500}}<>"") 

我想知道,如果它是推廣初始過濾配方,使您可以剪切和更多的票編號粘貼的方式,因此,例如,如果有20個或30個卡口與25列,你能不能輕鬆整合到一個頁面?

相關問題