首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为重复行添加单元格值

为重复行添加单元格值
EN

Stack Overflow用户
提问于 2017-11-24 16:37:14
回答 1查看 158关注 0票数 0

我创建了一个脚本来删除Google工作表中重复的行:

代码语言:javascript
运行
复制
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)列),并将它们涂成橙色,但我无法找到如何做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-24 19:04:10

您仍然需要一个双循环,但是没有必要有newData数组;可以修改data数组。如果两行在B列中匹配,则两者在A列中都得到“重复”。在for循环中的显式界使得避免将一行与其自身进行比较变得非常容易。

代码语言:javascript
运行
复制
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公式,例如

代码语言:javascript
运行
复制
=if(countif(B:B, B2) > 1, "Duplicate", )

(它放在A2中,然后复制到列中)

或者,作为A2中的数组公式:

代码语言:javascript
运行
复制
=arrayformula(if(countif(B:B2, B:B2) > 1, "Duplicate", ))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47477184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档