咨询:如何通过VBA基于B至U列删除Excel重复行
关于VBA删除重复行的范围替换问题
可以用ws.Range("B2:U3000")替代UsedRange,但要留意几个关键细节:
- 范围有效性:如果你的数据确定不会超过3000行,且B到U列的有效数据都在这个范围内,直接用固定范围没问题。但如果实际数据行数多于3000,超出部分的重复行不会被处理;如果数据行数少于3000,范围里包含的空行可能被误判为重复行删除(
RemoveDuplicates会把空行视为重复项)。 - 更灵活的动态范围写法:为了适配数据行数的变化,建议用动态范围替代固定行数,自动获取B列最后一行有数据的行号:
Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row ws.Range("B2:U" & lastRow).RemoveDuplicates Columns:=Array(1 To 20), Header:=xlYes RemoveDuplicates列参数注意:因为你选的范围从B列开始,这里的Columns参数是相对于该范围的列索引(B列是范围第1列,U列是第20列),所以用Array(1 To 20)就能指定检查B到U的所有列是否重复。如果用原工作表的列号(比如2到21)会报错,因为超出了所选范围的列数。
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

