Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6441|回复: 12

大侠们,帮忙写个删除重复项的程序呗

[复制链接]
发表于 2019-7-10 23:02 | 显示全部楼层 |阅读模式
2学分
大侠,大神们,帮忙写个删除重复项程序呗,谢谢
无标题2.png 无标题1.png

无标题1.png
无标题2.png

删除重复.rar

10.76 KB, 下载次数: 6

最佳答案

查看完整内容

Sub TQ() Dim X%, K% Dim str As String K = 1 For X = 2 To Cells(Rows.Count, 2).End(xlUp).Row If Application.WorksheetFunction.CountIf(Range("B2:B" & X), Cells(X, 2)) = 1 Then K = K + 1 Sheet1.Cells(X, 2).Copy Sheet2.Cells(K, 1) ElseIf Application.WorksheetFunction.CountIf(Range("B2:B" & X), Cells(X, 2)) = 2 Then str = str ...
发表于 2019-7-10 23:02 | 显示全部楼层
Sub TQ()
    Dim X%, K%
    Dim str As String
    K = 1
    For X = 2 To Cells(Rows.Count, 2).End(xlUp).Row
        If Application.WorksheetFunction.CountIf(Range("B2:B" & X), Cells(X, 2)) = 1 Then
            K = K + 1
            Sheet1.Cells(X, 2).Copy Sheet2.Cells(K, 1)
        ElseIf Application.WorksheetFunction.CountIf(Range("B2:B" & X), Cells(X, 2)) = 2 Then
            str = str & Cells(X, 2).Value & ","
        End If
    Next X
    Sheet2.Range("A1") = str
End Sub
回复

使用道具 举报

发表于 2019-7-11 09:08 | 显示全部楼层
这个不用写代码,下面两者选其一:
1、菜单-数据-删除重复项
2、数据透视也可以删除重复项
要保留原数据,先复制一份然后再操作;
回复

使用道具 举报

 楼主| 发表于 2019-7-11 09:43 | 显示全部楼层
hfwufanhf2006 发表于 2019-7-11 09:08
这个不用写代码,下面两者选其一:
1、菜单-数据-删除重复项
2、数据透视也可以删除重复项

这个办法我以前也是这样做的,我还要在A1汇总A1以下的内容,所以操作起来步骤很多,比较繁琐的
回复

使用道具 举报

发表于 2019-7-11 10:33 | 显示全部楼层
huangkepan 发表于 2019-7-11 09:43
这个办法我以前也是这样做的,我还要在A1汇总A1以下的内容,所以操作起来步骤很多,比较繁琐的

如果只是汇总,数据透视刚好就是专门做这个的。
如果一定要代码,通常有两种:数组法和字典法。相比较,数组理解简单点,一看就懂。数组通用性也更好,但在数据量很大(上万)且重复值比较少的情况下速度比字典明显慢。字典对于重复值不多的情况下速度会快点,重复值很多时两者差不多,但理解上需要有点深度,不然也用不好。
先给你写一数组的例子,代码放在sheet1中:
Worksheets(2).[a:a] = ""
Dim arr()
js = 0
hs = 2
For i = 2 To [b10000].End(3).Row
    s = Cells(i, 2)
    bz = False
    For k = 1 To js
        If arr(k) = s Then
           bz = True
           Exit For
        End If
    Next k
    If Not bz Then
       js = js + 1
       ReDim Preserve arr(js)
       arr(js) = s
       Worksheets(2).Cells(hs, 1) = s
       Worksheets(2).Cells(1, 1) = IIf(IsEmpty(Worksheets(2).Cells(1, 1)), s, Worksheets(2).Cells(1, 1) & "、" & s)
       hs = hs + 1
    End If
Next i


回复

使用道具 举报

发表于 2019-7-11 10:59 | 显示全部楼层
我试一试这个代码吧
回复

使用道具 举报

 楼主| 发表于 2019-7-11 11:48 | 显示全部楼层
hfwufanhf2006 发表于 2019-7-11 10:33
如果只是汇总,数据透视刚好就是专门做这个的。
如果一定要代码,通常有两种:数组法和字典法。相比较, ...

大侠,如何执行不懂啊

回复

使用道具 举报

 楼主| 发表于 2019-7-11 13:34 | 显示全部楼层
大神大侠们,帮帮忙呗
回复

使用道具 举报

发表于 2019-7-11 14:28 | 显示全部楼层
huangkepan 发表于 2019-7-11 11:48
大侠,如何执行不懂啊

你连代码如何执行都不知道,那写代码干什么?还是用数据透视就好了。1、先把代码复制粘贴到一个过程中,要是不知道什么叫过程那就真没办法了,我只能建议你放弃;
2、然后又两种方法,一是插入按钮,再让按钮与代码过程关联。二是按 alt+F8组合键,执行刚才建立的过程。
    代码放在sheet1的意思是在sheet1中插入按钮或者在sheet1中再按 alt+f8,如果换到 sheet2中按 alt+f8就变样了,得不到正确结果的。



回复

使用道具 举报

 楼主| 发表于 2019-7-11 14:51 | 显示全部楼层
hfwufanhf2006 发表于 2019-7-11 14:28
你连代码如何执行都不知道,那写代码干什么?还是用数据透视就好了。1、先把代码复制粘贴到一个过程中, ...

好吧,我慢慢研究研究
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 17:00 , Processed in 0.503833 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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