2016-02-10 93 views
0

我已經指出這tutorial刪除我的整個谷歌電子表格中的重複,但它需要很多時間,當表中包含大量的數據。因此,我需要刪除最近15個非空行中的重複項(只保留一條記錄)。谷歌腳本 - 刪除最近15行中的重複

這是代碼。

function removeDuplicates() { 
    var sheet = SpreadsheetApp.openById('11SbGOCZDiTc21Jjnh7r4XW43QNtdV2L0fGdzHDxRvdA'); 
    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); 
    } 
    } 
var first = sheet.getSheetByName("Sheet1"); 
first.clearContents(); 
first.getRange(1, 1, newData.length, newData[0].length).setValues(newData); 
} 

回答

1

修訂的要求基礎上,前兩列有列比較重複A到E:

function removeDuplicatesRev() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet() 
    var sheet =ss.getSheetByName("Sheet1") 
    var lr=sheet.getLastRow() 
    var lc=sheet.getLastColumn() 
    var data = sheet.getRange(2,1,lr,lc).getValues();//Changed to get all columns 
    var newData = new Array(); 
    var alen=data.length 
    var adjlen=alen-15 
    for(i=adjlen;i<alen;i++){ 
     var row = data[i]; 
     var duplicate = false; 
    for(j in newData){ 
     if(row[0] == newData[j][0] && row[1] == newData[j][1]){ //changed to compare col A&B 
     duplicate = true; 
     } 
    } 
    if(!duplicate){ 
     newData.push(row); 
    } 
    } 
var clr =sheet.getRange(adjlen+1, 1, 15, sheet.getLastColumn()) 
clr.clearContent() 
sheet.getRange(adjlen+1, 1, newData.length, newData[0].length).setValues(newData); 
} 
+0

謝謝@Ed,它的偉大工程。 –

+0

你能幫助我僅限於前2列嗎? –

+0

我的意思是,僅在前2列中查找重複項目 –