Excel如何基于两列区分大小写(case-sensitive)删除重复值
Excel两列区分大小写去重实现方案
以下两种方法均严格匹配两列文本大小写,完全满足示例中的去重规则,可根据数据量大小选择:
方案1:辅助列法(无代码,兼容全版本Excel,适合10万行以内数据)
- 在现有数据区域旁插入1列空白辅助列:假设表头在第1行,数据从第2行开始,待判断列为A列、B列,辅助列使用C列
- 点击C2单元格,输入如下公式:
=SUMPRODUCT(--EXACT($A$2:A2,A2),--EXACT($B$2:B2,B2))=1
输入完成后,Excel 2019及更早版本按Ctrl+Shift+Enter三键结束数组公式输入,365/2021及以上版本直接按回车即可 - 选中C2单元格,下拉填充公式到所有数据行。公式返回
TRUE代表该行是两列大小写完全匹配的首次出现项(保留),返回FALSE代表是重复项(需删除) - 选中辅助列,按
Ctrl+Shift+L开启筛选,筛选出所有值为FALSE的行,整行删除即可完成去重
原理说明:Excel原生的
EXACT函数是专门的区分大小写文本比对函数,搭配SUMPRODUCT逐行统计从数据起始行到当前行,与当前行A、B列内容大小写完全一致的行数,结果等于1即为唯一值。
方案2:VBA脚本法(适合10万行以上大数据量,处理效率更高)
- 打开待处理工作簿,按
Alt+F11调出VBA编辑器 - 在左侧工程资源管理器中右键点击当前工作表名称,选择「插入 > 模块」,将如下代码粘贴到弹出的代码编辑窗口:
Sub CaseSensitiveDupRemove() Dim lastRow As Long, i As Long Dim dict As Object, keyVal As String Set dict = CreateObject("Scripting.Dictionary") dict.CompareMode = vbBinaryCompare ' 二进制比对模式,严格区分大小写 ' 以下参数可根据实际表格修改:A代表判断列1为A列,B代表判断列2为B列,2代表数据从第2行开始 lastRow = Cells(Rows.Count, "A").End(xlUp).Row ' 从最后一行向上遍历,避免删除行导致行号错位 For i = lastRow To 2 Step -1 keyVal = Cells(i, "A").Value & Chr(0) & Cells(i, "B").Value ' 用不可见字符拼接两列值,避免内容冲突 If dict.Exists(keyVal) Then Rows(i).Delete Else dict.Add keyVal, "" End If Next i Set dict = Nothing MsgBox "区分大小写去重已完成" End Sub
- 按
F5运行脚本即可自动完成去重,运行前建议备份原始数据,避免误操作无法恢复。
注意:如果你的待判断列不是A、B列,或者数据起始行不是第2行,修改代码注释中标注的对应参数即可。
内容的提问来源于stack exchange,提问作者kz123
相关产品推荐
相关产品推荐

