如何修改VBA代码实现基于A/B/C三列匹配删除重复行
VBA三列联合去重代码修改方案
原代码仅通过比对A列相邻行值判定重复,要实现A、B、C三列值全部一致才删除重复行的需求,可直接使用修改后的代码:
Sub removeDupes() Dim i As Long Dim ws As Worksheet Set ws = ActiveSheet '可替换为指定工作表,写法为 Worksheets("你的工作表名") With ws ' 从A列最后一条有数据的行开始,从下向上遍历到第2行(默认第1行为表头,无表头则把数字2改为1) For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 2 Step -1 ' 同时比对A、B、C三列当前行与上一行的值,全部相等则判定为重复 If .Cells(i, 1).Value = .Cells(i - 1, 1).Value _ And .Cells(i, 2).Value = .Cells(i - 1, 2).Value _ And .Cells(i, 3).Value = .Cells(i - 1, 3).Value Then .Rows(i).Delete End If Next i End With End Sub
核心修改点
- 修正了原代码的循环范围逻辑:原代码从最后一行遍历到第3行、比对i行和i+1行的写法会漏判最后一组重复数据,改为遍历到第2行、比对i行和i-1行,从下往上删除的逻辑不会因为行号偏移导致判断错误。
- 扩展了重复判定条件:在原有A列等值判断的基础上,新增B列(第2列)、C列(第3列)的等值判断,只有三列值完全匹配时才会删除当前行。
注意事项
该方案基于相邻行比对实现去重,运行代码前请先以A、B、C三列为排序关键字对数据做升序/降序排列,保证三列值完全相同的行连续排布,否则会出现重复行漏删的问题。
内容的提问来源于stack exchange,提问作者Marianne
相关产品推荐
相关产品推荐

