【问题标题】:Removing row if it contains a duplicate cell如果行包含重复单元格,则删除行
【发布时间】:2019-08-11 13:06:25
【问题描述】:

我们有一个删除重复项功能,它删除以前重复的行,即如果 B1 和 B2 与第 1 行的 A1 和 A2 相同,则删除包含 B1 和 B2 的第 2 行。但我们希望只有当 B2 与 A2 相同时,才删除第 2 行。这是我们到目前为止的代码:

    function removeDuplicates() {
  const startTime = new Date();
  const newData = [];
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const numRows = data.length;
  const seen = {};

  for (var i = 0, row, key; i < numRows && (row = data[i]); i++) {
    key = JSON.stringify(row);
    if (key in seen) {
      continue;
    }
    seen[key] = true;
    newData.push(row);
  };

该函数应该只影响后面的行而不影响前面的行(即,应该删除第 2 行,而不是第 1 行)。

【问题讨论】:

    标签: javascript google-sheets


    【解决方案1】:

    也许您可以尝试不同的方法,例如在电子表格上应用公式,例如 =UNIQUE(Sheet1!B:B),然后将结果复制到新工作表中。这也应该可以通过编程方式实现。另见:

    编辑:我认为您需要的内容在 Google Developer 教程中有所描述。 https://developers.google.com/apps-script/articles/removing_duplicates 参见“变化”部分。我已经对此进行了调整以匹配第二列上的重复项。我已经使用示例电子表格对此进行了测试。

    function removeDuplicates() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var data = sheet.getDataRange().getValues();
      var newData = [];
      for (var i in data) {
        var row = data[i];
        var duplicate = false;
        for (var 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);
    }
    

    【讨论】:

    • 谢谢,但 UNIQUE 公式对我们不起作用,因为我们需要保持列之间的一致性。我们需要对两列使用该公式(A,用于名称,B,用于电子邮件)。但是运行 A 和 B 的公式会替换原始匹配(其中 A1 是电子邮件在 B2 中的人的姓名)。
    • UNIQUE 函数对于我们正在向其中添加新条目并希望检查每个新条目是否与前几行重复的工作表也有点笨拙。
    • 好的,我明白了。我自己试过这个并没有像我想的那样工作。 remove-rows-based-on-duplicates-in-a-single-column-in-google-sheets的第一个答案怎么样?我试过了,至少当我在同一个电子表格上插入过滤器时,它对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    相关资源
    最近更新 更多