Excel精英培训网

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

[已解决]请求帮组写一段VBA有附件

[复制链接]
发表于 2012-5-5 07:17 | 显示全部楼层 |阅读模式
本帖最后由 yaxi520 于 2012-5-5 08:10 编辑

请求帮组写一段VBA有附件
最佳答案
2012-5-5 11:29
楼主附件数据 137期的计算结果。
  1. Sub test()
  2.     Dim i%, j%, k%, m%, n%, a%, b%, c%
  3.    
  4.     arr = Sheet2.[a1].CurrentRegion '获取表2各期数据
  5.     m = UBound(arr) '最大行位置
  6.    
  7.     ReDim brr%(2 To m, 1 To 12) '整理各期原始数据到数组brr,便于高效计算比对
  8.     For i = 2 To m
  9.         For j = 1 To 5
  10.             brr(i, arr(i, j)) = 1 '算法关键:把各期数据拆分放置到相应1-12列位置
  11.         Next
  12.     Next
  13.    
  14.     n = Application.Combin(12, 3) '计算12选3最大组合数
  15.     ReDim crr(1 To n, 1 To 4) '定义存放结果的数组crr
  16.    
  17.     For a = 1 To 10
  18.     For b = a + 1 To 11
  19.     For c = b + 1 To 12
  20.         k = k + 1 '高效获取12选3组合结果
  21.         For i = 2 To m '遍历数组brr,比对已经按列整理好的各期数据。
  22.             If brr(i, a) * brr(i, b) * brr(i, c) Then '如果含有该组合
  23.                 crr(k, 1) = crr(k, 1) + 1 '【出现次数+1】
  24.                 If crr(k, 4) > crr(k, 2) Then crr(k, 2) = crr(k, 4) '比对并储存【最大遗漏】
  25.                 crr(k, 3) = crr(k, 4) '更新【上次遗漏】
  26.                 crr(k, 4) = 0 '重置【最新未出】
  27.             Else
  28.                 crr(k, 4) = crr(k, 4) + 1 '【最新未出数+1】
  29.             End If
  30.         Next
  31.     Next c, b, a
  32.    
  33.     Sheet1.[b2].Resize(n, 4) = crr '输出结果到工作表
  34. End Sub
复制代码
我的算法 在这里 无人能匹敌。


3333.rar

74.43 KB, 下载次数: 19

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

使用道具 举报

 楼主| 发表于 2012-5-5 08:11 | 显示全部楼层
桀骜孤星 发表于 2012-5-5 08:07
附件在哪呢,没有见呀

附件刚刚没加上  谢谢提醒
回复

使用道具 举报

发表于 2012-5-5 09:00 | 显示全部楼层
彩票不适合数学,数学家也不会中奖
回复

使用道具 举报

 楼主| 发表于 2012-5-5 09:18 | 显示全部楼层
桀骜孤星 发表于 2012-5-5 09:00
彩票不适合数学,数学家也不会中奖

说的很有道理    谢谢你我会记住的   9分运气1分算计   我不想丢在这1分上   如果能的到老师的帮助还是不胜感激的
回复

使用道具 举报

发表于 2012-5-5 09:30 | 显示全部楼层
菜票就是  而已,哄人呀。我不是老师,我是幼儿园的
回复

使用道具 举报

发表于 2012-5-5 11:29 | 显示全部楼层    本楼为最佳答案   
楼主附件数据 137期的计算结果。
  1. Sub test()
  2.     Dim i%, j%, k%, m%, n%, a%, b%, c%
  3.    
  4.     arr = Sheet2.[a1].CurrentRegion '获取表2各期数据
  5.     m = UBound(arr) '最大行位置
  6.    
  7.     ReDim brr%(2 To m, 1 To 12) '整理各期原始数据到数组brr,便于高效计算比对
  8.     For i = 2 To m
  9.         For j = 1 To 5
  10.             brr(i, arr(i, j)) = 1 '算法关键:把各期数据拆分放置到相应1-12列位置
  11.         Next
  12.     Next
  13.    
  14.     n = Application.Combin(12, 3) '计算12选3最大组合数
  15.     ReDim crr(1 To n, 1 To 4) '定义存放结果的数组crr
  16.    
  17.     For a = 1 To 10
  18.     For b = a + 1 To 11
  19.     For c = b + 1 To 12
  20.         k = k + 1 '高效获取12选3组合结果
  21.         For i = 2 To m '遍历数组brr,比对已经按列整理好的各期数据。
  22.             If brr(i, a) * brr(i, b) * brr(i, c) Then '如果含有该组合
  23.                 crr(k, 1) = crr(k, 1) + 1 '【出现次数+1】
  24.                 If crr(k, 4) > crr(k, 2) Then crr(k, 2) = crr(k, 4) '比对并储存【最大遗漏】
  25.                 crr(k, 3) = crr(k, 4) '更新【上次遗漏】
  26.                 crr(k, 4) = 0 '重置【最新未出】
  27.             Else
  28.                 crr(k, 4) = crr(k, 4) + 1 '【最新未出数+1】
  29.             End If
  30.         Next
  31.     Next c, b, a
  32.    
  33.     Sheet1.[b2].Resize(n, 4) = crr '输出结果到工作表
  34. End Sub
复制代码
我的算法 在这里 无人能匹敌。


3333.rar

18.01 KB, 下载次数: 11

评分

参与人数 1 +1 收起 理由
yaxi520 + 1 神马都是浮云

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-5-5 16:19 | 显示全部楼层
香川群子 发表于 2012-5-5 11:29
楼主附件数据 137期的计算结果。我的算法 在这里 无人能匹敌。

恩人。。名不需传
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 04:48 , Processed in 0.353436 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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