设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: pureshadow
打印 上一主题 下一主题

关于剔除重复

[复制链接]
1#
发表于 2008-3-24 19:43:10 | 显示全部楼层

我也来一个VBA的

VBA删除重复项,只是不是很完善,得麻烦你多点几次,直到没有重复项哦,点出来的快乐,哈哈........
Sub 删除重复()
Dim Lrow As Long
Dim I As Integer
Dim myCount
   Lrow = Sheets("sheet1").[A65536].End(xlUp).Row
   For I = 2 To Lrow
      myCount = Application.CountIf(Sheet1.Range("A2:A" & Lrow), Sheets("sheet1").Cells(I, 1))
      If myCount > 1 Then
         Sheets("sheet1").Cells(I, 1).Delete
      End If
   Next I
End Sub




实例样本:

[ 本帖最后由 tanhong 于 2008-3-24 20:30 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
2#
发表于 2008-3-24 19:45:25 | 显示全部楼层
以上代码就当抛砖引玉,希望后面能出现更多精彩
3#
发表于 2008-3-25 20:36:14 | 显示全部楼层
小妖有一好多法宝要慢慢亮出来,快闪.............[:33]
4#
发表于 2008-3-25 21:40:37 | 显示全部楼层
Sub 删除重复()
Dim Lrow As Long
Dim I As Integer
Dim J As Integer
Dim myCount
   
   '关闭刷屏
  Application.ScreenUpdating = False
   
   '得到数据总行数
  Lrow = Sheets("sheet1").[A65536].End(xlUp).Row
   
  '避开标题行,即从第二行到最后一行进行循环
  For I = 2 To Lrow
      '因为考虑到进行删除操作后,需重更新得到数据总行数
      Lrow = Sheets("sheet1").[A65536].End(xlUp).Row
      '重第二行向新得到的总行数进行循环
      For J = 2 To Lrow
                 
          '按遍历单元格条件进行计数
          myCount = Application.CountIf(Sheet1.Range("A2:A" & Lrow), Sheets("sheet1").Cells(I, 1))
                  
          '计数大于1,对所在行进行删除操作
          If myCount > 1 Then
              Sheets("sheet1").Cells(I, 1).Delete
          End If
      Next J
   
   Next I
  
   '打开刷屏
  Application.ScreenUpdating = True
End Sub


以上我完善后的代码,不需要再重复点击了,哈哈....少了点击的快乐了!

[ 本帖最后由 tanhong 于 2008-3-26 19:34 编辑 ]
5#
发表于 2008-3-26 16:38:48 | 显示全部楼层
小妖版主有一大堆的方法,期待哦。。。。。。
6#
发表于 2008-3-26 19:34:57 | 显示全部楼层
[:30] 成心为难我哦,你储备充足..........[:27]
7#
发表于 2008-3-26 20:30:18 | 显示全部楼层
受小妖版主技巧操作的启发,做出第三段代码,在此对小妖版主表示感谢!

主要思路:
1、首先进行排序
2、用A1=A2判断进区别是否重复,为真则表示重复
3、对为真的行进行循环删除

代码如下:

Sub 删除重复二()
Dim LRow As Long
Dim I As Integer
Dim J As Integer
Dim myBoolean As Boolean
   
   Application.ScreenUpdating = False
   
   LRow = Sheets("sheet1").[A65536].End(xlUp).Row
   '进行排序
   Range("A2:A" & LRow).Sort Key1:=Range("A2")
   
   For I = 2 To LRow

      LRow = Sheets("sheet1").[A65536].End(xlUp).Row
  
      For J = 2 To LRow
         '得到布尔值
          myBoolean = Sheet1.Range("A" & I - 1) = Sheet1.Range("A" & I)
          '值为真则进行删除
          If myBoolean = True Then
             Sheets("sheet1").Cells(I, 1).Delete
          End If
      Next J
   
   Next I
  
   Application.ScreenUpdating = True
End Sub
8#
发表于 2008-3-26 21:59:13 | 显示全部楼层
哈哈,收网了哦,打到鱼了[:32]
9#
发表于 2008-3-27 11:05:47 | 显示全部楼层
原帖由 pureshadow 于 2008-3-27 10:53 发表

谢谢师傅
学习一下[:17]


小妖的师傅出马了,学习........
10#
发表于 2008-3-27 18:24:38 | 显示全部楼层
原帖由 欢欢 于 2008-3-27 17:28 发表
A2单元格数组函数公式:=IF(SUM(1/COUNTIF($A$2A$8,$A$2A$8))>=ROW(1:1),OFFSET($A$2,SMALL(IF(MATCH($A$2A$8,$A$2:$A$8,0)=ROW($A$2:$A$8)-1,ROW($A$2:$A$8)-1),ROW(1:1)),0,1,1),"")      下拉即可


欢欢的函数强哦,难怪小妖常提及。学习了
能否修改一下,可能是你的符号变成了表情动画了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-6 21:40 , Processed in 0.107392 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表