Excel精英培训网

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

[已解决]用VBA字典删除重复项所在的行

[复制链接]
发表于 2017-7-13 12:44 | 显示全部楼层 |阅读模式
例子里面有详细说明,还有一个函数返回的问题,二张表
最佳答案
2017-7-14 11:14
  1. Sub 删除()
  2.     Dim Delrng As Range
  3.     Set d = CreateObject("scripting.dictionary")
  4.     arr = [a1].CurrentRegion
  5.     Set Delrng = Rows(65536)
  6.     For i = 2 To UBound(arr)
  7.         x = arr(i, 2)
  8.         If Not d.exists(x) Then d(x) = "" Else Set Delrng = Union(Delrng, Rows(i))
  9.     Next
  10.     Delrng.Delete
  11. End Sub
复制代码

例子.rar

438.94 KB, 下载次数: 18

发表于 2017-7-13 12:54 | 显示全部楼层
C列后面有空格,D2公式改成:=VLOOKUP(TRIM(C2),$A$1:$B$2099,2,0)
至于删除重复行再确认一下,重复姓名的是保留一行还是全部删除,保留的话随便保留哪一行都可以吗?
回复

使用道具 举报

 楼主| 发表于 2017-7-13 14:42 | 显示全部楼层
大灰狼1976 发表于 2017-7-13 12:54
C列后面有空格,D2公式改成:=VLOOKUP(TRIM(C2),$A$1:$B$2099,2,0)
至于删除重复行再确认一下,重复姓名的 ...

删除重复的要保留一行,随便删哪行都行,我只要有一行数据就行了
。谢谢
回复

使用道具 举报

发表于 2017-7-14 11:14 | 显示全部楼层    本楼为最佳答案   
  1. Sub 删除()
  2.     Dim Delrng As Range
  3.     Set d = CreateObject("scripting.dictionary")
  4.     arr = [a1].CurrentRegion
  5.     Set Delrng = Rows(65536)
  6.     For i = 2 To UBound(arr)
  7.         x = arr(i, 2)
  8.         If Not d.exists(x) Then d(x) = "" Else Set Delrng = Union(Delrng, Rows(i))
  9.     Next
  10.     Delrng.Delete
  11. End Sub
复制代码

示例.rar

738.01 KB, 下载次数: 18

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 22:36 , Processed in 0.382017 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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