ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 Office知识技巧免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 294|回复: 11

[求助] 求助去重复的方式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-6-29 01:38 | 显示全部楼层 |阅读模式
单列或多列均可以对比另外一列数据,实现去除重复。
image.png

vba求不重复.zip

7.93 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2020-6-29 08:04 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-29 09:43 | 显示全部楼层

您好,老师,这个代码报错,还有区域"a2:c"如何选择,代码中没有体现。
image.png

TA的精华主题

TA的得分主题

发表于 2020-6-29 09:57 | 显示全部楼层
zhangtaobeijing 发表于 2020-6-29 09:43
您好,老师,这个代码报错,还有区域"a2:c"如何选择,代码中没有体现。

你用的是文字识别吧,字典的代码错了

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-29 10:19 | 显示全部楼层
zhangmi 发表于 2020-6-29 09:57
你用的是文字识别吧,字典的代码错了

image.png
去掉了空,不报错了,但没有反映,点运行没有任何动作。
  1. Sub lqxs()
  2. Dim d, rng As Range, cel As Range
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Sheet1.Activate
  5. [f2:f5000].ClearContents
  6. Set rng = Selection
  7. If rng Is Nothing Then MsgBox "请选择单元格区域。": Exit Sub
  8. For Each cel In rng
  9.     If cel.Value <> "" Then d(cel.Value) = ""
  10. Next
  11. If d.Count > 0 Then [f2].Resize(d.Count) = Application.Transpose(d.keys)
  12. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2020-6-29 10:31 | 显示全部楼层
本帖最后由 lwwy1981 于 2020-6-29 10:35 编辑

vba求不重复.rar (15.96 KB, 下载次数: 175)

TA的精华主题

TA的得分主题

发表于 2020-6-29 10:33 | 显示全部楼层
本帖最后由 笨鸟飞不高 于 2020-6-29 10:35 编辑

Sub AwTest()
    Dim i%, j%, arr, d As Object
    Set d = CreateObject("Scripting.Dictionary")
    [e1].CurrentRegion.Offset(1, 1) = ""
    arr = [e1].CurrentRegion
    For i = 2 To UBound(arr)
        d(arr(i, 1)) = ""
    Next
    arr = [a1].CurrentRegion
    For i = 2 To UBound(arr)
        For j = 1 To UBound(arr, 2)
            If d.exists(arr(i, j)) Then d.Remove (arr(i, j))
        Next
    Next
    [f2].Resize(d.Count) = Application.Transpose(d.keys)
End Sub
猜一个!!

TA的精华主题

TA的得分主题

发表于 2020-6-29 10:56 | 显示全部楼层
dim d,arr,ar
set d =creatobject("scripting.dictionary")
arr=range("a2:c"&[a2].end(xldown).row)
for each ar in arr
     d(ar)=""
next
range("f2").resize(d.count)=application.transpose(d.keys)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-29 12:34 | 显示全部楼层
chem_87 发表于 2020-6-29 10:56
dim d,arr,ar
set d =creatobject("scripting.dictionary")
arr=range("a2:c"&[a2].end(xldown).row)

函数未定义,a2:c 对比    E 列需要比较

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-29 12:41 | 显示全部楼层
笨鸟飞不高 发表于 2020-6-29 10:33
Sub AwTest()
    Dim i%, j%, arr, d As Object
    Set d = CreateObject("Scripting.Dictionary")

猜的不错,您的答案最接近!
arr = [a1].CurrentRegion
   想区域改成  ”a2:c“ ,这种格式,以后若要改变单列或多列的列数可调,(比如以后只想求B,C列就可以改为B2:C,单独求C列時就可以改成c2:c)。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,高效办公专列,每天发车

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2020-7-11 06:26 , Processed in 0.069181 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

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