首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除Google电子表格中的重复行

删除Google电子表格中的重复行
EN

Stack Overflow用户
提问于 2015-07-21 03:28:58
回答 1查看 177关注 0票数 0

我需要这个脚本删除行(在注册表中)与取消注册表的注册码匹配注册码。到目前为止,此脚本仅在"sheetR.deleteRow(i);“不在"if (regCodeR === regCodeCR) {}”内时删除一行。它也不会删除正确的行。

代码语言:javascript
复制
function rD() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetR = ss.getSheetByName("Registration");
  var sheetCR = ss.getSheetByName("Cancel Registration")
  var dataR = sheetR.getDataRange().getValues();
  var dataCR = sheetCR.getDataRange().getValues();
  var headerRow = 1;
  for (var i = 1; i in dataR && i in dataCR; ++i) {
      var rowR = dataR[i];
      var rowCR = dataCR[i];
      var duplicate = false;
      var regCodeR = sheetR.getRange(headerRow + i, 10).getValues();
      var regCodeCR = sheetCR.getRange(headerRow + i, 9).getValues();
          if (rowR[9] === rowCR[8]) {
          duplicate = true;
          }
  }
  if (regCodeR === regCodeCR) {
      sheetR.deleteRow(i);
  }
}
EN

回答 1

Stack Overflow用户

发布于 2015-07-22 02:20:40

我用简单的数据尝试了这段代码,其中有一列有注册号。您可以根据您的数据修改主工作表范围。还要确保更改图纸名称。

尝试并测试了以下代码:

代码语言:javascript
复制
function deleteDup(){
  var mainSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('regis');
  var cancelSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('cancel');
  var mainSheetValues = mainSheet.getRange(2, 1, mainSheet.getLastRow(),1).getValues();
  var cancelSheetValues = cancelSheet.getRange(2, 1, cancelSheet.getLastRow(),1).getValues();
  var k = 0;
  var del = [];
  // Getting the row index of matching values
  for (i = 0; i < cancelSheetValues.length; i++)
  {
    var cancelValue = cancelSheetValues[i][0];
    Logger.log(cancelValue);
    for (j = 0; j < mainSheetValues.length; j++)
    {
      if(mainSheetValues[j][0] == cancelValue){
        del[k] =  j;
        k++;

      }
    }

  }
  del.sort();
  var count =0;
  // deleting the values from the main sheet values array
  for (i = 0; i < k; i++ )
  {
    mainSheetValues.splice((del[i] - count), 1);
    count++;
  }
  var len = mainSheetValues.length;
  // Update the sheet with new values
  mainSheet.getRange(2, 1, mainSheet.getLastRow(),1).clearContent();
  mainSheet.getRange(2, 1, len,1).setValues(mainSheetValues);

}

但是你也可以这样做:

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31524797

复制
相关文章

相似问题

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