Excel精英培训网

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

[已解决]求助VBA

[复制链接]
发表于 2013-9-21 00:43 | 显示全部楼层 |阅读模式
Book1.rar (8.38 KB, 下载次数: 14)
发表于 2013-9-21 06:47 | 显示全部楼层
直接用字典,9个数据项一统计,一轮完成后,字典清空。
回复

使用道具 举报

发表于 2013-9-21 07:34 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim arr, arr2(1 To 1000, 1 To 1), k As Integer
  3.     Dim lLastRow As Long
  4.     lLastRow = Cells(Rows.Count, "f").End(xlUp).Row
  5.     arr = Range(Range("f2"), Cells(lLastRow, "g")).Value
  6.     Dim objDic As Object
  7.     On Error Resume Next
  8.     Set objDic = CreateObject("scripting.dictionary")

  9.     For i = LBound(arr) To UBound(arr) Step 9
  10.         For j = 0 To 8
  11.             If Len(arr(i + j, 1)) Then
  12.                 objDic(arr(i + j, 1)) = objDic(arr(i + j, 1)) + 1
  13.             End If
  14.         Next
  15.         For Each Key In objDic.keys
  16.             If objDic(Key) > 1 Then
  17.                 k = k + 1
  18.                 arr2(k, 1) = "'" & Key
  19.             End If
  20.         Next
  21.         objDic.RemoveAll
  22.     Next
  23.     Set objDic = Nothing
  24.     If k Then
  25.         Range("h2").Resize(k).Value = arr2
  26.         MsgBox "数据提取完成"
  27.     Else
  28.         MsgBox "没有符合要求的数据"
  29.     End If
  30.    
  31. End Sub
复制代码
回复

使用道具 举报

发表于 2013-9-21 08:59 | 显示全部楼层
Sub ÇóÖظ´Öµ()
Set d = CreateObject("scripting.dictionary")
Set t = CreateObject("scripting.dictionary")
Dim arr(1 To 5, 1 To 9)

For i = 1 To 5 '把数据放入数组
For j = 1 To 9
arr(i, j) = Range("f" & (i - 1) * 9 + j + 1)
Next
Next

For i = 1 To 5
For j = 1 To 9
  If arr(i, j) <> "" Then
   If d.exists(arr(i, j)) = True Then 
   t(arr(i, j)) = "" ‘存在则写入另一个字典
   Else
   d(arr(i, j)) = ""
   End If
  End If
Next
d.RemoveAll
n = n + t.Count
Range(Cells(n + 2 - t.Count, 1), Cells(n + 1, 1)) = Application.Transpose(t.keys) ’输出字典
t.RemoveAll
Next

End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 14:08 , Processed in 0.412599 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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