Excel精英培训网

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

[已解决]VBA比较A列唯一值 另一种方法还没有写完

[复制链接]
发表于 2017-6-13 19:46 | 显示全部楼层 |阅读模式
本帖最后由 laoau138 于 2017-6-13 22:47 编辑


VBA比较A列唯一值   另一种方法还没有写完


Sub 比较A列唯一值()
Dim arr, i&, j&
arr = [a1].CurrentRegion
ReDim brr(1 To UBound(arr), 1 To 1)
For i = 1 To UBound(arr) - 1
   For j = i + 1 To UBound(arr)
       If arr(i, 1) = arr(j, 1) Then arr(j, 1) = "@"
   Next
Next

'比较A列唯一值   D列保存答案   还没有写完
'假如arr 某一行不等于"@"    自动存入数组brr   请高手指导如何继续
End Sub


最佳答案
2017-6-13 19:53
本帖最后由 chart888 于 2017-6-13 19:54 编辑
  1. Private Sub CommandButton1_Click()
  2. Dim i&, Myr&, Arr
  3. Dim d, k
  4. Set d = CreateObject("Scripting.Dictionary")
  5. Myr = [A65536].End(xlUp).Row
  6. Arr = Range("a1:a" & Myr)
  7. For i = 1 To UBound(Arr)
  8.     d(Arr(i, 1)) = ""
  9. Next
  10. k = d.Keys
  11. [D1].Resize(d.Count, 1) = Application.Transpose(k)
  12. Set d = Nothing
  13. End Sub
复制代码
VBA比较A列唯一值   另一种方法还没有写完.png

VBA比较A列唯一值 另一种方法还没有写完.rar

7.27 KB, 下载次数: 2

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-6-13 19:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 chart888 于 2017-6-13 19:54 编辑
  1. Private Sub CommandButton1_Click()
  2. Dim i&, Myr&, Arr
  3. Dim d, k
  4. Set d = CreateObject("Scripting.Dictionary")
  5. Myr = [A65536].End(xlUp).Row
  6. Arr = Range("a1:a" & Myr)
  7. For i = 1 To UBound(Arr)
  8.     d(Arr(i, 1)) = ""
  9. Next
  10. k = d.Keys
  11. [D1].Resize(d.Count, 1) = Application.Transpose(k)
  12. Set d = Nothing
  13. End Sub
复制代码

VBA比较A列唯一值 另一种方法还没有写完.zip

10.17 KB, 下载次数: 4

评分

参与人数 1 +9 收起 理由
laoau138 + 9 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-6-13 20:17 | 显示全部楼层

用数组不要用字典

点评

字典那么方便,为何强求数组呢?话说看你每天提问,丝毫没有进步啊。。。  发表于 2017-6-13 20:33
回复

使用道具 举报

发表于 2017-6-13 20:32 | 显示全部楼层
laoau138 发表于 2017-6-13 20:17
用数组不要用字典
  1. Private Sub CommandButton2_Click()
  2. Dim arr()
  3. Dim brr(1 To 10000, 1 To 1) As String
  4. Dim i&, j&
  5. Dim k&
  6. arr = Range("A1:A" & Cells(Rows.Count, 1).End(3).Row).Value
  7. k = 0
  8. For i = 1 To UBound(arr)
  9.     For j = 1 To k
  10.         If brr(j, 1) = arr(i, 1) Then
  11.             Exit For
  12.         End If
  13.     Next j
  14.         If j = k + 1 Then
  15.             k = k + 1
  16.             brr(k, 1) = arr(i, 1)
  17.         End If
  18. Next i
  19. Range("D1").Resize(1000, 1) = brr
  20. End Sub
复制代码


VBA比较A列唯一值 另一种方法还没有写完.zip

11.93 KB, 下载次数: 4

评分

参与人数 1 +9 收起 理由
laoau138 + 9 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-6-13 22:46 | 显示全部楼层

因为不喜欢字典    更喜欢用数组
回复

使用道具 举报

 楼主| 发表于 2017-6-13 22:47 | 显示全部楼层

因为太笨了,学习方式与其它人与从不同,

现在越来越少人回答我问题了

你再回答多几条问题,我就有进步了


回复

使用道具 举报

 楼主| 发表于 2017-6-13 22:48 | 显示全部楼层



果然是高手

怎么以前没有见过你,
回复

使用道具 举报

发表于 2017-6-13 23:46 | 显示全部楼层
laoau138 发表于 2017-6-13 22:48
果然是高手

怎么以前没有见过你,

我也是菜鸟
回复

使用道具 举报

 楼主| 发表于 2017-6-14 12:32 | 显示全部楼层

你比我强N倍
回复

使用道具 举报

 楼主| 发表于 2017-6-14 12:34 | 显示全部楼层

用VBA正则表达式拆分提取

第一次发问正则,高手快来解答


http://www.excelpx.com/thread-431113-1-1.html


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 05:47 , Processed in 0.400843 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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