Excel精英培训网

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

vba 标识重复项

[复制链接]
发表于 2019-10-14 11:24 | 显示全部楼层 |阅读模式
如附件所示。

vba 标识重复项.zip

6.72 KB, 下载次数: 8

发表于 2019-10-14 12:27 | 显示全部楼层
如果重复的数据量不是很大(几百个),数组搞下就行了:
Dim arr(10000)
If [d100000].End(3).Row > 3 Then
   Range(Cells(4, 4), Cells([d100000].End(3).Row, 4)).ClearContents
End If
js = 0
For i = 4 To [a100000].End(3).Row
    s = Cells(i, 1) & Cells(i, 2) & Cells(i, 3)
    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
       arr(js) = s
    Else
       Cells(i, 4) = "S"
    End If
Next i

如果重复的数据量超过500,还是字典更快些。重复的数据越多,速度差距越大。关于字典代码到处都是,反而是数组的不好找,所以我给你写的是数组查询。
回复

使用道具 举报

 楼主| 发表于 2019-10-14 14:15 | 显示全部楼层
hfwufanhf2006 发表于 2019-10-14 12:27
如果重复的数据量不是很大(几百个),数组搞下就行了:
Dim arr(10000)
If [d100000].End(3).Row > 3 Th ...

谢谢,但是我的数据块100万行了。。所以还是字典好。
回复

使用道具 举报

发表于 2019-10-15 12:42 | 显示全部楼层
重复标识的代码:
2019-10-15重复标识.png

评分

参与人数 1学分 +2 收起 理由
1005423860 + 2

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 02:22 , Processed in 0.751030 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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