You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Google Apps Script实现完全丢弃重复行仅留唯一行?

解决方案:保留仅出现一次的行

一、修改Google Apps Script脚本

原脚本仅移除重复实例、保留唯一行的一份拷贝,要实现只保留从未重复过的行,可以修改为先统计每行的出现次数,再筛选出仅出现一次的行:

function keepOnlyUniqueRows() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().getValues();
  
  // 统计每行的出现次数(用|分隔字段,避免字段含逗号导致误判)
  const rowCount = new Map();
  data.forEach(row => {
    const rowKey = row.join('|');
    rowCount.set(rowKey, (rowCount.get(rowKey) || 0) + 1);
  });
  
  // 筛选仅出现一次的行
  const uniqueRows = data.filter(row => {
    const rowKey = row.join('|');
    return rowCount.get(rowKey) === 1;
  });
  
  // 清空表格并写入结果
  sheet.clearContents();
  if (uniqueRows.length > 0) {
    sheet.getRange(1, 1, uniqueRows.length, uniqueRows[0].length).setValues(uniqueRows);
  }
}

关键改动说明:

  • 用Map统计每行出现次数,比原脚本的嵌套循环效率更高,适合大数据量场景
  • 用|作为字段分隔符,避免因单元格内容含逗号导致不同行被误判为重复
  • 最后只保留计数为1的行,完全丢弃所有出现过多次的行

二、使用Google Sheets公式实现

如果不想写脚本,直接用内置公式也能实现:

方法1:QUERY函数

假设数据在A:C列,在空白列(比如E1)输入:

=ARRAYFORMULA(QUERY(A:C, "select * where count(A) = 1 group by A,B,C", 1))
  • 参数1表示数据包含表头,若没有表头可改为0
  • 原理:按整行分组,只保留分组后计数为1的行

方法2:FILTER+COUNTIFS函数

同样针对A:C列,输入:

=FILTER(A:C, ARRAYFORMULA(COUNTIFS(A:A, A:A, B:B, B:B, C:C, C:C) = 1))
  • 原理:用COUNTIFS统计每行的出现次数,再用FILTER筛选出次数为1的行

内容的提问来源于stack exchange,提问作者user12736831

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:20:38