2016-10-05 66 views
0

我一直在試圖尋找在互聯網上的一段代碼,或者可以幫助我解決這個問題的一個方向。
基本上,我有一組,其中在最新的專欄中需要說明的是什麼數據是代表給出了四列數據。
我每天都會導入新的數據,其中描述可能相同,但給出的數據不同,它們只是數字。
現在我希望我的腳本找到重複項,獲取數據並將其添加到原始數據並刪除重複項。
所以,我只想積累第一列並刪除其餘的數據。刪除重複的行和第一列添加到原始行谷歌腳本

我知道如何找到重複,刪除整個數據集的和推新的數據集沒有重複到紙張上。
但是,我找不到任何可能的此在線。將var Newdata中的某個範圍的值複製到找到重複項的行中,然後將該數組完全推送出去可能是一種可能性。
但是,我試圖合併的所有內容都會給我帶來多個錯誤和無限的計算時間。

我希望有人能幫助我與此有關。

function DuplicateRemoval(){ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var data = sheet.getDataRange().getValues(); 
    var newData = new Array(); 
    for(i in data){ 
    var row = data[i]; 
    var duplicate = false; 
    for(j in newData){ 
     if(row.join() == newData[j].join()){ 
     duplicate = true; 
     } 
    } 
    if(!duplicate){ 
     newData.push(row); 
    } 
    } 
    sheet.clearContents(); 
    sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData); 
} 

回答

0

是這樣的嗎?

function overwriteWithNew() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var data = sheet.getDataRange().getValues(); 
    var newData = []; 

    data.forEach(function(row, rowI) { 
    if (!newData.some(function(row2) {return row[0] === row2[0];})) { // If the key is not in the output yet 
     for (var row2I = data.length - 1; row2I >= rowI; row2I--) {  // Then, starting from the last column 
     if (data[row2I][0] === row[0]) {        // Find the latest data with the same key 
      newData.push(data[row2I]);         // Add it to the output 
      break;              // And continue with the next row 
     } 
     } 
    } 
    }); 
    sheet.clearContents(); 
    sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData); 
} 
+0

嗨羅賓,謝謝你這麼多。因此,例如,如果我的重複描述是在列5中,並且我想要SUM的數據在列1中,那麼在此腳本中可能會有這種情況嗎?它看起來像這個只檢查一列並將同一列添加到一起,這是正確的嗎? –

+0

啊,現在我明白了,這本來也可能被用'= QUERY完成(A:E, 「選擇E,SUM(A),其中E <> '' GROUP BY E」)'你想要的格式變化?如果不是2-4列會發生什麼情況? –

+0

我剛剛再次更改了我的數據,其中Col C包含將被複制的描述,Col D和E是需要在重複時合計的值。我以前從來沒有使用過Query,只能將該查詢放在表單中的任何單元格中?謝謝 –

相關問題