如何用VBA删除表格中某列重复的的数据所在行,只留下其中一个即可。

有个数据库,很庞大,需要针对B列,把B列中重复的数据所在行删除,只需要留一行即可,删除时,要删除重复数据所在行,而不是重复的单元格。要求2003及以上版本都可以使用的VB... 有个数据库,很庞大,需要针对B列,把B列中重复的数据所在行删除,只需要留一行即可,删除时,要删除重复数据所在行,而不是重复的单元格。要求2003及以上版本都可以使用的VBA编程,谢谢。

急,在线等!
我想要VBA的解决办法,谢谢!
展开
 我来答
鱼木混猪哟
高粉答主

推荐于2016-06-22 · 专注Office,尤其Excel和VBA
鱼木混猪哟
采纳数:6078 获赞数:33697

向TA提问 私信TA
展开全部
用字典可以轻松快捷地实现去重的操作,代码如下:
Sub main()
Set dic = CreateObject("scripting.dictionary") '创建字典对象,并把字典对象赋给变量dic;这是最常用的一句代码,也就是所谓的“后期绑定”
For i = Range("B65536").End(3).Row To 1 Step -1 '从B列的最后一行到第一行依次递减,如果是从第一行到最后一行递增,则会因为删除行而跳过很多行,达不到去重效果
If dic.exists(Cells(i, "B").Value) Then '如果B列中的数据已经在字典中了(也就是重复了)
Rows(i).Delete '就删除这一行
Else
dic(Cells(i, "B").Value) = "" '否则就把B列的数据放入字典中
End If
Next i
End Sub
帐号已注销
2014-08-06 · TA获得超过8613个赞
知道大有可为答主
回答量:3242
采纳率:66%
帮助的人:2865万
展开全部
Sub tt2()
'使用字典删除重复数据,加快运行速度,并增加运行提示
Dim iCol%, i&, n&, m&, r&, d, dd, a, tmp

iCol = [B1].Column '数据源的列位置,需要的话请更改此处

Set d = CreateObject("Scripting.Dictionary") '使用字典
Set dd = CreateObject("Scripting.Dictionary") '使用字典

r = Cells(65536, iCol).End(xlUp).Row
If r < 2 Then MsgBox "只有一行数据,不需整理!": Exit Sub
a = Cells(1, iCol).Resize(r, 1)
For i = 1 To r
tmp = a(i, 1)
If Not d.Exists(tmp) Then d(tmp) = "": dd(i) = ""
Next
n = r - dd.Count
If n > 0 Then
If MsgBox("找到 " & n & " 行重复数据! 要删除吗?", vbQuestion + vbOKCancel) <> vbOK Then
Exit Sub
End If
Else
MsgBox "没有重复数据,不需整理!": Exit Sub
End If
m = 0
For i = r To 1 Step -1
If Not dd.Exists(i) Then Rows(i).Delete: m = m + 1
Next
MsgBox "找到 " & n & " 行重复数据,删除了 " & m & " 个。", vbInformation
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
10993358
推荐于2016-10-13 · TA获得超过4279个赞
知道大有可为答主
回答量:1813
采纳率:100%
帮助的人:2268万
展开全部
Sub tt()
Dim i As Integer
For i = Range("b1").End(xlDown).Row To 1 Step -1
If Application.WorksheetFunction.CountIf(Range(Cells(1, 2), Cells(i, 2)), Cells(i, 2)) > 1 Then
Rows(i).Delete
End If
Next
End Sub
这段代码比较简单你看看
你打开excel alt+f11一起按 插入模块
复制代码 按 F5执行了看看
还有你多少行啊 我写的时候几百行 没问题 不知道几万行卡不卡呢 你看看 有问题联系我吧~
追问
是这个as integer的约束吗?不行的话,我改成as long,这样行吗?
追答
我是定义I 为整数  和Range("b1").End(xlDown).Row   对应最大行号的 Long应该也可以的吧
你是要嵌套在别的代码里面用还是什么情况?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljq6413
2011-05-17 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1588
采纳率:50%
帮助的人:595万
展开全部
excel用函数可以实现找出重复的了,然后筛选删除即可。

假设B列中可能有重复的数据,从B2开始有数据,则:C2=countif(B2:B$2,B2),然后把C列>1的筛选出来,手工全部选中删除就可以了。

注意:从上到下,数据只会保留第一个不重复的数据,如果要从下到上保留第一个不重复的数据,改一下公式即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式