如何删除Google Sheets中重复的反向URL相似度配对条目
Google Sheets双向URL重复条目去重解决思路
方案一:纯公式操作(无代码基础也可快速上手)
- 新增辅助列D,命名为统一唯一标识,D2单元格输入公式:
=IF(A2<B2, A2&"|"&B2, B2&"|"&A2),下拉填充所有行。该公式会对每行的两个URL按字符串大小排序后拼接,正向、反向的重复条目会生成完全相同的标识,中间加|是为了避免URL首尾字符拼接产生意外重复。 - 新增辅助列E,命名为是否冗余,E2单元格输入公式:
=COUNTIF(D$2:D2, D2)>1,下拉填充所有行。返回TRUE即为需要删除的重复条目,首次出现的唯一条目返回FALSE。 - 筛选E列值为
TRUE的行直接删除即可,也可通过条件格式自定义规则=$E2=TRUE高亮冗余行后人工核对再删除。
方案二:Apps Script脚本批量处理(适合万行级数据,效率更高)
- 点击表格顶部菜单栏「扩展程序」-「Apps Script」进入脚本编辑器
- 清空默认代码,粘贴以下代码:
function removeDuplicateUrlPairs() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const allData = sheet.getDataRange().getValues(); const uniqueKeys = new Set(); const resultRows = []; // 跳过表头行,若无表头请将下方i初始值改为0 for (let i = 1; i < allData.length; i++) { const [urlA, urlB, similarity] = allData[i]; // 统一生成排序后的键,有大小写不敏感需求可加.toLowerCase() const uniqueKey = urlA < urlB ? `${urlA}|${urlB}` : `${urlB}|${urlA}`; if (!uniqueKeys.has(uniqueKey)) { uniqueKeys.add(uniqueKey); resultRows.push(allData[i]); } } // 清空原表写入去重后数据,保留表头 sheet.clearContents(); sheet.getRange(1, 1, 1, allData[0].length).setValues([allData[0]]); if (resultRows.length) { sheet.getRange(2, 1, resultRows.length, resultRows[0].length).setValues(resultRows); } }
- 保存脚本后点击运行,完成授权后即可自动完成全量数据去重,1.1万行数据处理耗时不超过10秒。
操作前请务必先备份完整表格,避免误操作导致数据丢失;如果URL存在大小写差异但视为相同的需求,可在生成uniqueKey时给urlA和urlB加上
.toLowerCase()转小写后再比较。
内容的提问来源于stack exchange,提问作者Dennisslj
相关产品推荐
相关产品推荐

