我创建了一个脚本来删除Google工作表中重复的行:
function removeDuplicates() {
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[1] == newData[j][1]){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
现在,我想修改它,使之不删除重复的行,而是在两个行/单元格中检测到的重复项的开头添加“重复:”(脚本只扫描第2(B)列),并将它们涂成橙色,但我无法找到如何做到这一点。
发布于 2017-11-24 11:04:10
您仍然需要一个双循环,但是没有必要有newData
数组;可以修改data
数组。如果两行在B列中匹配,则两者在A列中都得到“重复”。在for循环中的显式界使得避免将一行与其自身进行比较变得非常容易。
var data = sheet.getDataRange().getValues();
for (i = 0; i < data.length; i++) {
for (j = 0; j < i; j++) {
if (data[i][1] == data[j][1]) {
data[i][0] = "Duplicate";
data[j][0] = "Duplicate";
}
}
sheet.clearContents();
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
顺便说一句,这个逻辑可以在没有脚本的情况下实现,可以使用Google公式,例如
=if(countif(B:B, B2) > 1, "Duplicate", )
(它放在A2中,然后复制到列中)
或者,作为A2中的数组公式:
=arrayformula(if(countif(B:B2, B:B2) > 1, "Duplicate", ))
https://stackoverflow.com/questions/47477184
复制相似问题