Excel精英培训网

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

[已解决]VBA彩票选号 循环有点复杂求大侠帮忙

[复制链接]
发表于 2013-10-6 20:56 | 显示全部楼层 |阅读模式
VBA彩票选号 循环有点复杂求大侠帮忙 7组数中各选出指定个数,7组中有几组再分几组。M选N+M选N+M1或M2选N+M1或M2或M3选N.....有哪位大侠能搞定不
最佳答案
2013-10-7 20:37
本帖最后由 香川群子 于 2013-10-7 20:44 编辑

前面部分改成Do循环,效果更好,逻辑性更强一些。
  1. Dim sj1, sj2, jg(), k&, l&, m&, n&
  2. Sub Combin_kagawa()
  3.     tms = Timer
  4.     sj = [a1].CurrentRegion.Offset(1)
  5.     ReDim sj2(1 To 1000, 1 To UBound(sj))
  6.     l = 0: i = 0
  7.     Do
  8.         i = i + 1: n = sj(i, 1)
  9.         If n Then
  10.             l = l + 1: k = 0
  11.             Do
  12.                 If sj(i, 3) <> "" Then
  13.                     ReDim sj1(1 To UBound(sj, 2))
  14.                     For j = 1 To UBound(sj, 2)
  15.                         If sj(i, j + 2) = "" Then Exit For Else sj1(j) = sj(i, j + 2)
  16.                     Next
  17.                     m = j - 1
  18.                     Call dgZH("", 0, 1)
  19.                 End If
  20.                 If sj(i + 1, 1) <> "" Then Exit Do Else i = i + 1
  21.             Loop Until i = UBound(sj)
  22.             If k > kk Then kk = k
  23.         End If
  24.     Loop Until i = UBound(sj)
  25.    
  26.     m = kk: n = l: k = 0
  27.     [c1].Offset(UBound(sj) + 3).CurrentRegion = ""
  28.     [c1].Offset(UBound(sj) + 3).Resize(m, n) = sj2
  29.     ReDim jg(60000, 0)
  30.     Call dgMN("", 1)
  31.    
  32.     [a2].Offset(, UBound(sj, 2) + 1).CurrentRegion = ""
  33.     [a2].Offset(, UBound(sj, 2) + 1).Resize(k) = jg
  34.     MsgBox Format(Timer - tms, "0.000s ") & k
  35. End Sub
  36. Sub dgZH(r$, i%, t%)
  37.     Dim j%
  38.     For j = i + 1 To m - n + t
  39.         If t < n Then Call dgZH(r & "," & sj1(j), j, t + 1) Else k = k + 1: sj2(k, l) = Mid(r & "," & sj1(j), 2)
  40.     Next
  41. End Sub
  42. Sub dgMN(r$, j%)
  43.     Dim i%
  44.     For i = 1 To m
  45.         If sj2(i, j) <> "" Then If j < n Then Call dgMN(r & "," & sj2(i, j), j + 1) Else jg(k, 0) = Mid(r, 2) & "," & sj2(i, j): k = k + 1
  46.     Next
  47. End Sub
复制代码

七乐彩选号.zip

21.11 KB, 下载次数: 54

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-10-6 21:14 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-10-6 21:18 | 显示全部楼层
是的。我先选出多组数,然后再在不同组数里选出不同的个数,组成一组彩票号码
回复

使用道具 举报

 楼主| 发表于 2013-10-6 21:21 | 显示全部楼层
哥,帮忙写下吧
回复

使用道具 举报

发表于 2013-10-6 22:12 | 显示全部楼层
jianli888 发表于 2013-10-6 21:21
哥,帮忙写下吧

这种的  我觉得还是你自己去学习  然后写更好一些  你是想用这个挣钱   却让别让浪费时间和精力   是不是不合理啊
回复

使用道具 举报

 楼主| 发表于 2013-10-6 22:20 | 显示全部楼层
不是赚钱,只是自己用一下,你帮我写,我给你充10块钱的话费,学会有点难呀。
回复

使用道具 举报

发表于 2013-10-7 09:13 | 显示全部楼层
这个有点难
回复

使用道具 举报

发表于 2013-10-7 09:24 | 显示全部楼层
不是难。是为了让人早日脱离苦海,还是袖手吧
回复

使用道具 举报

发表于 2013-10-7 15:49 | 显示全部楼层
就楼主附件写了个程序代码,可以很快捷地计算得到全部组合结果。

按照楼主附件要求,本程序对原始数据的条件限制为:
1. 元素1-5分别取自数据区域1-5,每个区域只取1个数(不管有多少行都一样)
2. 元素6-7取自数据区域6,每次中某一行中任取2个数(目前设置有4行)


如果取数条件有改变,例如需要从第4或第5区域中同时取2-3个数,则代码将无法正确运行。
即,附件中上述2条规则是不能变更的。






caipiao.zip

46.14 KB, 下载次数: 192

回复

使用道具 举报

发表于 2013-10-7 15:52 | 显示全部楼层
上清宫主 发表于 2013-10-7 09:24
不是难。是为了让人早日脱离苦海,还是袖手吧

上清别说风凉话。


我估计这里除了我出手,没有人能解这个问题。


多列嵌套组合。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 05:46 , Processed in 0.765236 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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