Excel精英培训网

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

[已解决]如何选中重复数据并生成另一个工作表?

[复制链接]
发表于 2013-8-22 21:12 | 显示全部楼层 |阅读模式
本帖最后由 森林木007 于 2013-8-23 14:04 编辑

重复值另存工作表问题2003.zip (8.94 KB, 下载次数: 42)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-8-22 21:43 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-8-23 14:05 | 显示全部楼层
lyf7276 发表于 2013-8-22 21:43
字典代码你不是写好吗?

附件传错了!
现已经纠正,请查阅!谢谢!
回复

使用道具 举报

 楼主| 发表于 2013-8-23 15:10 | 显示全部楼层
请老师帮忙!
回复

使用道具 举报

 楼主| 发表于 2013-8-23 17:15 | 显示全部楼层
仔细一想,其实就是以"有效证件号码"为关键字筛选出重复值,让后根据关键字复制整行到新表,新表再根据关键字排序即可得到效果;
本人在2010下用颜色自定义,再筛选出重复值排序即可,但数据量大,操作费劲。
所以请高手给一个VBA的解决方案。
回复

使用道具 举报

发表于 2013-8-23 17:31 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim A(), B(), d, i&, j&, s&
   
    A = Sheets(1).Range("a1").CurrentRegion.Value
    ReDim B(1 To UBound(A), 1 To UBound(A, 2))
    Set d = CreateObject("scripting.dictionary")
   
   
    For i = 2 To UBound(A)
        d(A(i, 4)) = d(A(i, 4)) + 1
    Next i

    For i = 2 To UBound(A)
        If d(A(i, 4)) > 1 Then
            s = s + 1
            For j = 1 To UBound(A, 2)
                B(s, j) = A(i, j)
            Next j
        End If
    Next i


    With Sheets(2)
        .Range("a2:g65536").Clear
        .Range("d:e").NumberFormatLocal = "000000"
        .Range("a2").Resize(s, UBound(B, 2)) = B
    End With
End Sub

评分

参与人数 1 +1 收起 理由
森林木007 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-8-24 19:57 | 显示全部楼层
爱疯 发表于 2013-8-23 17:31
Sub test()
    Dim A(), B(), d, i&, j&, s&
   

谢谢老师帮忙!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 16:17 , Processed in 0.387258 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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