Excel精英培训网

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

[已解决]用VBA数组 双重循环去A列重复 结果保存D列

[复制链接]
发表于 2017-3-1 18:54 | 显示全部楼层 |阅读模式
本帖最后由 laoau138 于 2017-3-1 21:26 编辑

用VBA数组   双重循环去A列重复   结果保存D列

不要用字典方法  只用数组方法


按钮控制结果输出


最佳答案
2017-3-1 19:56
  1. Sub test()
  2.     Dim arr, brr
  3.     arr = Cells(1, 1).CurrentRegion
  4.     For i = 2 To UBound(arr)
  5.         For j = 1 To i - 1
  6.             If arr(i, 1) = arr(j, 1) Then
  7.                 n = n + 1
  8.             End If
  9.         Next
  10.         If n > 0 Then
  11.             arr(i, 1) = "@"
  12.         End If
  13.         n = 0
  14.     Next
  15.     brr = VBA.Filter(Application.Transpose(arr), "@", False)
  16.     [d1].Resize(UBound(brr) + 1, 1) = Application.Transpose(brr)
  17. End Sub
复制代码
用VBA数组   双重循环去A列重复   结果保存D列.jpg

用VBA数组 双重循环去A列重复 结果保存D列.rar

5.88 KB, 下载次数: 9

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-3-1 19:56 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim arr, brr
  3.     arr = Cells(1, 1).CurrentRegion
  4.     For i = 2 To UBound(arr)
  5.         For j = 1 To i - 1
  6.             If arr(i, 1) = arr(j, 1) Then
  7.                 n = n + 1
  8.             End If
  9.         Next
  10.         If n > 0 Then
  11.             arr(i, 1) = "@"
  12.         End If
  13.         n = 0
  14.     Next
  15.     brr = VBA.Filter(Application.Transpose(arr), "@", False)
  16.     [d1].Resize(UBound(brr) + 1, 1) = Application.Transpose(brr)
  17. End Sub
复制代码

评分

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

查看全部评分

回复

使用道具 举报

发表于 2017-3-1 20:11 | 显示全部楼层
不用双循环。模拟字典来个简单的哈希算法思路,以下代码仅限本题。哈希函数按不同类型,有不同算法。

  1. Sub test()
  2.     Dim arr(1 To 122), brr, crr, i, k
  3.     brr = [a1:a13]
  4.     ReDim crr(1 To UBound(brr))
  5.     For i = 1 To UBound(brr)
  6.         If arr(Asc(brr(i, 1))) = "" Then
  7.             k = k + 1
  8.             crr(k) = brr(i, 1)
  9.             arr(Asc(brr(i, 1))) = 1
  10.         End If
  11.     Next
  12.     Range("e1").Resize(k) = Application.Transpose(crr)
  13. End Sub
复制代码
用VBA数组 双重循环去A列重复 结果保存D列.rar (8.37 KB, 下载次数: 4)

评分

参与人数 2 +26 金币 +20 收起 理由
laoau138 + 6 来学习
望帝春心 + 20 + 20 来学习~

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-3-1 21:25 | 显示全部楼层

其实2个代码都非常好
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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