我给VBA下的定义:VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率,而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。
作为我的学员要利用我的积木编程思想,积木编程最重要的是积木如何搭建及拥有积木。在九套教程中我给出了大量的积木,同时讲解了如何搭建。为了让学员拥有更多的积木,我开始着手这部《VBA即用型代码手册(汉英)》的创作,这部手册约600页,集合约500多个的案例,案例我用汉语和英语同时发布,一方面学员从中可以更好的领会和掌握VBA中用到的一些英语知识,另一方面,大家可以看到各种各样的积木。这部手册是大家学习和工作中的不可多得的实用资料。今日的内容是: VBA即用型代码手册:删除重复行Delete Duplicate Rows
【分享成果,随喜正能量】活得通透的人 ,没有特别想维持的关系 ,也没有特别想要的东西 ,走近的人不抗拒 ,离开的人不强留 ,就连吃亏也懒得计较。。
第四章 工作表代码
Worksheet Codes
18 删除重复行Delete Duplicate Rows
此宏将删除在列表或工作表中出现两次的行。如果两个单元格相同,则此宏将删除第一个匹配项下具有相同单元格的每一行。第一个实例仍将保留,但原始单元格下方的行中的所有相同单元格都将被删除。为了运行宏,您需要选择要在其中搜索重复项的整个列,然后运行该宏。
This macro will delete rows that appear twice in a list or worksheet. If two cells are identical, this macro will delete every row with an identical cell which is underneath the first occurrence. The first instance will still remain, but all identical cells in the rows underneath the original cell will be deleted. In order to run the macro, you need to select the entire column where you want to search for duplicates and then run the macro.
Sub mynzDeleteDuplicateRows()
'此宏将删除位于第一次出现的行下的所有重复行。
'使用宏时,请选择一列以检查重复项,然后运行宏,所有重复项都将被删除,只保留第一个重复项。
Dim R As Long
Dim N As Long
Dim V As Variant
Dim Rng As Range
On Error GoTo EndMacro
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'确定列
Set Rng = Application.Intersect(ActiveSheet.UsedRange, _
ActiveSheet.Columns(ActiveCell.Column))
Application.StatusBar = "正在处理行: " & Format(Rng.Row, "#,##0")
N = 0
For R = Rng.Rows.Count To 2 Step -1
If R Mod 500 = 0 Then
Application.StatusBar = "正在处理行: " & Format(R, "#,##0")
End If
V = Rng.Cells(R, 1).Value
If V = vbNullString Then
If Application.WorksheetFunction.CountIf(Rng.Columns(1), vbNullString) > 1 Then
Rng.Rows(R).EntireRow.Delete
N = N + 1
End If
Else
If Application.WorksheetFunction.CountIf(Rng.Columns(1), V) > 1 Then
Rng.Rows(R).EntireRow.Delete
N = N + 1
End If
End If
Next R
EndMacro:
Application.StatusBar = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Duplicate Rows Deleted: " & CStr(N)
End Sub
- 本节内容参考程序文件:Chapter04-2.xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中: