您的位置: 首页 > EXCEL技巧 > ExcelVBA >

VBA删除工作表中的重复行

时间:2013-12-13 整理:docExcel.net

如果要在Excel中用VBA的方法以根据某列内容删除重复的行,即当某列有重复数据时仅保留一行,可以用下面的VBA代码。假如以A列为参考,工作表的第一行为标题行,数据从第二行开始。

方法一:用工作表函数CountIf判断该行是否重复

Sub 删除重复行1()
Dim i As Long
Application.ScreenUpdating = False
For i = Range("A65536").End(xlUp).Row To 3 Step -1
  If WorksheetFunction.CountIf(Range("A2:A" & i), Cells(i, 1)) > 1 Then
Cells(i, 1).EntireRow.delete
  End If
Next
Application.ScreenUpdating = True
End Sub

方法二:先高级筛选,再删除隐藏行

Sub 删除重复行2()
Dim rCell As Range, rRng As Range, dRng As Range
On Error Resume Next
Application.ScreenUpdating = False
Set rRng = Range("A1:A" & Range("A65536").End(xlUp).Row)
rRng.AdvancedFilter Action:=xlFilterInPlace, unique:=True
For Each rCell In rRng
  If rCell.EntireRow.Hidden = True Then
  If dRng Is Nothing Then
Set dRng = rCell.EntireRow
   Else
Set dRng = Application.Union(dRng, rCell.EntireRow)
   End If
  End If
Next
If Not dRng Is Nothing Then dRng.delete
ActiveSheet.ShowAllData
Application.ScreenUpdating = True
End Sub

VBA删除工作表中的重复行 问题:VBA删除工作表中的重复行
回答:如果要在Excel中用VBA的方法以根据某列内容删除重复的行,即当某列有重复数据时仅保留一行,可以用下面的VBA代码。假如以A列为参考,工作表的第一行为标题行,数据从第二行开始。 方法一:用工作表函数CountIf判断该行是否...
用VBA删除单元格、行和列 问题:用VBA删除单元格、行和列
回答:如果要用VBA代码在Excel工作表中删除指定的单元格、行和列,可以使用下面的代码:Sub DeleteCellRowColumn()    '删除活动单元格,下方单元格上移    ActiveCell.Delete Shift:=xlUp    '删除选定的区域,右方单元格...
VBA批量删除自定义单元格样式 问题:VBA批量删除自定义单元格样式
回答:...况,工作簿中的自定义单元格样式非常多,需要将其全部删除,如果手动逐一操作显得有些繁琐,如下图所示的自定义单元格样式。 这时用下面的VBA代码可一次删除所有的自定义单元格样式,方法如下。1.按Alt+F11打开VBA编辑器...
用VBA删除空行和空列 问题:用VBA删除空行和空列
回答:在Excel中删除空行和空列的方法有很多,下面的方法是用VBA代码来删除工作表指定区域中的空行和空列: Option Explicit Sub Delete_Empty_Rows()   Dim rnArea As Range   Dim lnLastRow As Long, i As Long, j As Long    Application...
用VBA进行多表合并计算一例 问题:用VBA进行多表合并计算一例
回答:... 方法是:将要存放合并数据的工作表命名为“汇总”,删除工作簿中没有合并数据的工作表,各工作表中要合并的数据右侧和下边没有其他数据。然后在VBA编辑器中运行下面的代码: Sub Summary() Worksheets( 汇总 ).[e5].CurrentRegion.Cl...
EXCEL总是有宏提示 问题:EXCEL总是有宏提示
回答:...没有病毒! 参考回答:1.把宏删掉 工具-宏-打开宏,选择删除宏 2.工具-宏-VBA编译器-把其中的代码注释掉或删掉(有可能有多个工作表中都有VBA代码)
相关知识:

下面内容对您也许有用

      话题:vba删除工作表
      问:大家帮忙看看,我想以倒序方法删除50个工作表中的后45个,但下面运行时总是报
      答:i 变量的类型不对 sheets.count 是long 类型的是16位(2 个字节)的数值形式 你定义的byte 是8 位(1个字节)的数值形式 你把i变量定义为 integer 或者long 类型 EXCEL中如何用VBA删除多个工作表 vba 删除excel数据
      话题:Excel VBA中删除被保护工作表中的指定行。知道
      答:不知道你怎样保护工作表,保护时是否还允许删除。如果设置保护为什么都不能修改呢?你可以使用密码先解锁,删除后再保护起来,屏幕闪,可以加screenupdating。 EXCEL中如何用VBA删除多个工作表 Excel如何用VBA代码删除工作表
      话题:怎样用VBA编写代码删除工作表A列到D列重复的内容
      答:没有图,想象不出具体什么情况,也不知道你要如何删除,如何保留。一般做法是用循环排查。 Excel如何用VBA代码删除工作表VBA excel 高手进,急需删除行
      话题:EXCEL中如何用VBA删除多个工作表?知道
      问:例如:工作簿中有名为tt1、tt2和sht1、sht2、sht3、sht4、sht5、sht6、sht7.等
      答:sub ds()for i=worksheets.count to 1 step-1 if worksheets(i).name like"sh*"then '(这里的sh区分大小写)worksheets(i).delete end if next end sub excel vba基础使用方法 EXCEL中 如何用 VBA删除多个工作
      话题:EXCEL2010 VBA如何禁止删除工作表
      EXCEL2010 VBA如何禁止删除工作表把文件保存成模板,或把文件属性设置成只读.要进行编辑时,模板的保存成同名
      话题:EXCEL中 如何用 VBA删除多个工作表中的同一行
      问:删除多个工作表中的第六行
      答:Public Sub ()Dim i As Integer,j As Integer j=Worksheets.Count For i=1 To j Sheets(i).Rows("6:6").Delete Shift:=xlUp Next End Sub EXCEL中如何用VBA删除多个工作表 用excel VBA怎么把多个工作表
      话题:VBA 工作表分割
      问:在一个工作表中有如下数据 A 1 2 B 2 3 A 2 3 C 1 2 B 1 2 C 2 3 如何用VBA,将第
      答:务必保证你要分类的数据在当前活动的工作表 就是说 不要选中其他工作表执行宏。工作簿中的其他工作表会被删除,如果不希望如此可以注释掉 For I=Sheets.Count To
      话题:求vba代码:删除工作表的最后三行,(该工作表从第1-n行都有
      答:佩服enjoyllonely的高招,十五级的实力不是盖的!但也有个缺陷,即默认最大行数为65536行,这是不对的。新版EXCEL里最大行数已放大了n倍,如果完善点,应该这样 如何复制数据到另一工作表vba 求一段vba代码:在工作表中第1列
      话题:Excel VBA 删除指定工作表与模块
      问:附件不方便上传,可 Hi 我或留下联络方式。谢谢~
      答:删除指定工作表的代码如下:Sub 删除指定工作表()Dim a As String a=InputBox("请输入要删除工作表名字")Sheets(a).Delete End Sub EXCEL中如何用VBA删除多个工作表 Excel如何用VBA代码删除工作表
      话题:在excel中如何使用vba命令实现批量删除指定名称的工作表
      答:按Alt+F11,双击ThisWorkbook,粘贴下面的代码:Sub ouyangff()On Error Resume Next Application.DisplayAlerts=False For i=2 To[g65536].End(3).Row a$=Cells excel 想批量删除每行数据.(最好 EXCEL VBA查询工作表名称
最新评论