龙空技术网

VBA代码解决方案之二十九:EXCEL中,如何删除重复数据行

VBA语言専攻 678

前言:

眼前各位老铁们对“vba 删除重复项的代码”大概比较注重,姐妹们都需要学习一些“vba 删除重复项的代码”的相关知识。那么小编同时在网上网罗了一些对于“vba 删除重复项的代码””的相关内容,希望兄弟们能喜欢,同学们一起来了解一下吧!

各位好,今天开始讲VBA代码解决方案的二十九讲:在EXCEL中,如何借助于代码来完成删除重复行的工作。在实际工作中这个问题是经常用到的,有没有重复的数据,是EXCEL数据统计中非常重要的工作之一,也是经常处理的工作之一。如果掌握了这个技巧,无形中会提高自己的工作效率,而且还可以提高工作的准确性。

实例:在实际应用中,可能需要删除工作表中A列的重复内容而只保留一行,如何来解决这个问题呢?可以借助工作表CountIf函数来完成。我们先来讲解一下Countif函数。

Countif函数: 是Microsoft Excel中对指定区域中符合指定条件的单元格计数的一个函数,在WPS,Excel2003和Excel2007等版本中均可使用。

语法规则如下:countif(range,criteria)

参数:

a) range 要计算其中非空单元格数目的区域

b) criteria 以数字、表达式或文本形式定义的条件

在讲解完这个函数后,我们来看代码:

Sub MyDeleteRow()

Dim R As Integer

Dim i As Integer

With Sheets("sheet9")

R = .[A65536].End(xlUp).Row

For i = R To 1 Step -1

If WorksheetFunction.CountIf(.Columns(1), .Cells(i, 1)) > 1 Then

.Rows(i).Delete

End If

Next

End With

End Sub

代码解析:MyDeleteRow过程删除工作表A列重复单元格所在的整行内容,只保留一行。

a) 第5行代码取得工作表中A列的最后一个非空单元格的行号,要注意Range对象的End属性。不知读者是否已经掌握。

b) 第6行到第10行代码从最大行数至最小行数循环判断A列单元格内容是否重复并删除重复单元格所在的整行。和技巧32 一样,此处For...Next循环也要从最大行数至最小行数开始循环判断,否则可能会删除不净。

c) 其中第7、8行代码使用工作表CountIf函数判断单元格内容是否重复,如果重复则删除该单元格所在的行。

运行MyDeleteRow过程工作表区域下截图:

代码截图:

运行后的截图:

运行的结果后,可以看到和预想的一样。

今日内容回向:

1 删除工作表中重复数据的思路是什么?

2 COUNTIF 的意义是什么?

3 上面代码中.Columns(1)的意义是什么?

标签: #vba 删除重复项的代码