我对编码非常陌生,因此对一个非常基本的问题表示歉意。 我正在尝试通过检查第一列中的值在工作表中查找重复项。
如果值匹配,则删除不是最新的行。
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TEST")
var data = sheet.getRange(1, 1, sheet.getLastRow()).getValues();
var newData = [];
for(var i=0;i<sheet.getLastRow();i++){
for(j=0;j<newData.length;j++){
if (newData[j][0] != data[i][0]){
var fullrange= sheet.getRange(i,1,1,17); newData.push(fullrange);
}
}
}
sheet.clearContents(); sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
------------------------------------------------------------------------
上面的代码使整行彼此匹配。我已经尝试过StackOverflow的多个代码-但徒劳无功。
如果有人可以帮助我,我表示感谢!
答案 0 :(得分:1)
尝试一下:
function removeDuplicates() {
var ss=SpreadsheetApp.getActive();
var sh=SpreadsheetApp.getActive().getSheetByName("Sheet1")
var rg=sh.getDataRange();
var dA=rg.getValues();
var col=1;//comparison column
var nA=[];//unique data
var cA=[];//unique array of dA[i][col-1] ie the comparson array
for(var i=1;i<dA.length;i++){
if(cA.indexOf(dA[i][col-1])<0){//if the first column of the current row is not in the cA array then that's a keeper so we put the first column of this row into the cA array and we put the whole row into the nA array. If it is in the cA array then it's a duplicate so we don't push the first columns or the whole rows.
cA.push(dA[i][col-1]);
nA.push(dA[i]);
}
}
var sheet=ss.getSheetByName('Sheet18');//I used another sheet so I didn't mess up my data sheet
sheet.clearContents();
//nA is a two dimensional array of rows that have column col unique.
sheet.getRange(1, 1, nA.length, nA[0].length).setValues(nA);
}
正如我在评论中说的,我使用另一张表作为输出,因为我不想弄乱我的数据表。因此,您必须对其进行一些修改才能使其适合您的应用程序。