Excel精英培训网

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

[已解决]VBA搜索历史

[复制链接]
发表于 2015-4-19 08:42 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-4-19 19:05 | 显示全部楼层
  1. Sub main()
  2.     tms = Timer
  3.     arr = Sheet2.Range("c2:h" & Sheet2.[c65536].End(3).Row)       '彩票数据数组
  4.     brr = Sheet1.Range("b2:g" & Sheet1.[b65536].End(3).Row)        '条件数组
  5.     Dim ar%(5), br%(5)
  6.     ReDim crr(1 To UBound(brr), UBound(brr, 2))
  7.     For i = 1 To UBound(brr)
  8.         For j = 1 To 6: br(j - 1) = brr(i, j): Next
  9.         For k = 1 To UBound(arr)
  10.             For j = 1 To 6: ar(j - 1) = arr(k, j): Next
  11.             p = CompAB(ar, br)
  12.             crr(i, p) = crr(i, p) + 1
  13.         Next
  14.     Next
  15.     [I2].Resize(UBound(crr), UBound(crr, 2)) = crr
  16.     MsgBox Timer - tms & "秒"
  17. End Sub

  18. Function CompAB(ar%(), br%())        '返回数组br各数在数组ar中出现的次数
  19.     Dim s%(1 To 33)
  20.     For Each a In ar    '数组s以ar中每个数为下标的值设为1
  21.         s(a) = 1
  22.     Next
  23.     For Each b In br       '数组s以br中每个数为下标的值相加,即为数组br各数在数组ar中出现的次数
  24.         CompAB = CompAB + s(b)
  25.     Next
  26. End Function
复制代码

VBA搜索历史.zip

115.76 KB, 下载次数: 6

回复

使用道具 举报

发表于 2015-4-19 19:05 | 显示全部楼层
运算结果和你的模拟结果不一致。不知道是谁的问题。
回复

使用道具 举报

 楼主| 发表于 2015-4-20 09:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2015-4-20 10:56 | 显示全部楼层    本楼为最佳答案   
代码小改一下就可。速度比蓝版的要快些。

VBA搜索历史.rar

91.7 KB, 下载次数: 2

评分

参与人数 1 +3 收起 理由
laoau132 + 3 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-4-20 10:57 | 显示全部楼层
我原来比较的是条件数组在彩票数组中出现的次数,现在倒过来,比较彩票数组在条件数组中出现的次数。

评分

参与人数 1 +3 收起 理由
laoau132 + 3 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 14:52 , Processed in 0.364488 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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