excel vba ,excel表中A列有多个单元格值相同,则删除单元格所在行,且只保留这些相同值

excelvba,excel表中A列有多个单元格值相同,则删除单元格所在行,且只保留这些相同值中排最后的一个值,这一行不删除... excel vba ,excel表中A列有多个单元格值相同,则删除单元格所在行,且只保留这些相同值中排最后的一个值,这一行不删除 展开
 我来答
真真真白丁
推荐于2016-12-03 · TA获得超过8517个赞
知道大有可为答主
回答量:4644
采纳率:85%
帮助的人:1690万
展开全部

亲,是这个意思么?

打开你的Excel文件,按“Alt+F11”打开VBA编辑窗口,然后在左侧对应的Sheet上双击,右侧空白处粘贴下面的代码。关闭VBA窗口。然后按“Alt+F8”打开宏窗口,选择刚插入的宏,点击“执行”。

 

 

Sub sc()
Dim d
Set d = CreateObject("Scripting.Dictionary")
Dim i, r As Long
r = Cells(Rows.Count, "A").End(xlUp).Row
For i = r To 1 Step -1
    d(Range("A" & i).Value) = d(Range("A" & i).Value) + 1
    If d(Range("A" & i).Value) > 1 Then Rows(i).Delete
Next
Set d = Nothing
End Sub
更多追问追答
追问
错误429
追答
在VBA编辑窗口,按F8单步执行,看看在哪一步程序中断了。然后,把错误的那段代码和错误提示窗口截图上来看看。
百无生
2015-02-04 · TA获得超过2214个赞
知道大有可为答主
回答量:2150
采纳率:80%
帮助的人:625万
展开全部
假设数据区域A2:A20,则
1)B2=COUNTIF(A2:A$20,A2)
2)复制粘贴到B2:B20
3)筛选B列所有>1的值,删除掉
这样应该就可以了,非要用VBA的话,就按这个思路编程吧
1)用intRow=range("A" & rows.count).end(xlup).row 方法获取最大行号
2)dim rng as range, set rng = range("A2:A" & intRow)
3)rng.FormulaR1C1 = "=COUNTIF(RC[-1]:R" & intRow & "C[-1],RC[-1])"
4)筛选(录个宏,改一下)
5)dim rng2 as range, 用set rng2 =rng.SpecialCells(xlCellTypeVisible)方法获取可见单元格区域,然后删掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友52ac4f4
2015-02-04 · 超过85用户采纳过TA的回答
知道小有建树答主
回答量:351
采纳率:0%
帮助的人:141万
展开全部
有偿可以考虑帮做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式