Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: vfla

[已解决]请教组合统计问题

[复制链接]
发表于 2012-2-2 23:06 | 显示全部楼层
呵呵,楼主测试了一整天啦……

是否条件有较大的改变?


否则即使几万行数据,也应该花不了多长时间的呀。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2012-2-2 23:10 | 显示全部楼层
香川群子 发表于 2012-2-2 13:02
组合得到了5个代码,已经合并了,

却还要用split去拆分以后,一个一个去比较……效率就低多了。

香川群子老师
我在实际运用时有一个表格数字不是连续的
原问题是从1-12个数取组合
实际运用有一个表格是从11-18 21-28 31-38 41-48 51-58 61-68 71-78 81-88  一共64个数中取组合,就是从11开始,没有0和9
记得以前在"汉字组合出现问题"中有见老师说过要加一段辅助数组,不过我不知道要怎样加进去
麻烦老师再帮忙看看谢谢
回复

使用道具 举报

 楼主| 发表于 2012-2-2 23:22 | 显示全部楼层
香川群子教师在组合上使用的优算法效率确实高

在"求出使用次数最多的汉字组合"问题中就见识过了[em17],

今天自己表格的测试更确定了这一点,在大量数据运算时,所用时间要少很多
回复

使用道具 举报

 楼主| 发表于 2012-2-2 23:26 | 显示全部楼层
奈何我的表格运算量也太太大了
老师帮我看看怎样加代码解决数据不连续的问题
理论上能通过就OK
具体测试我自己来吧
谢谢
回复

使用道具 举报

发表于 2012-2-3 15:36 | 显示全部楼层
【数据不连续的问题】又是神马问题?

我只能回答,理论上应该不存在问题。
回复

使用道具 举报

发表于 2012-2-3 15:39 | 显示全部楼层
举个例子:

获取a1:a50000范围读入VBA数组arr
其中有n个空行是分隔开来的,
但接下来的数据,要做连续有效计算……

那么很简单,每次判断arr(i,2)是否为空白,
如果是空白就什么也不做继续,直到有新的数据行开始,继续统计……

大概就是这样的吧。

回复

使用道具 举报

发表于 2012-2-3 15:40 | 显示全部楼层
vfla 发表于 2012-2-2 23:22
香川群子教师在组合上使用的优算法效率确实高

在"求出使用次数最多的汉字组合"问题中就见识过了 ...

"求出使用次数最多的汉字组合"问题,你怎么知道的……

这个不是这里的问题哦。


回复

使用道具 举报

 楼主| 发表于 2012-2-4 11:44 | 显示全部楼层
本帖最后由 vfla 于 2012-2-4 11:54 编辑
香川群子 发表于 2012-2-3 15:36
【数据不连续的问题】又是神马问题?

我只能回答,理论上应该不存在问题。
  1. For a = 1 To 8
  2.         For b = a + 1 To 9
  3.             For c = b + 1 To 10
  4.                 For d = c + 1 To 11
  5.                     For e = d + 1 To 12
复制代码
首先谢谢老师的回答
这个代码中,数字是从1到12,也就是1 2 3 4 5 6 7 8 9 10 11 12是连续的
我有一个表格,数字是11,12,13,14,15,16,17,18,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38
要从这24个数字每取5个为一组
这里的24个数字在红色标记的地方是不连续的
就是尾数为0和9的数都没有

回复

使用道具 举报

发表于 2012-2-4 16:56 | 显示全部楼层
这个 当然一点也不难。

用数字序号排序,但返回数组中对应的不连续值……


如果自己能搞定,就自己搞。

搞不定,就上附件。
回复

使用道具 举报

发表于 2012-2-4 17:08 | 显示全部楼层
  1. Sub test()
  2.     Dim f(1 To 24)
  3.     For i = 11 To 38
  4.         If i Mod 10 > 0 And i Mod 10 < 9 Then j = j + 1: f(j) = i
  5.     Next
  6.    
  7.     For a = 1 To 8
  8.         For b = a + 1 To 9
  9.             For c = b + 1 To 10
  10.                 For d = c + 1 To 11
  11.                     For e = d + 1 To 12
  12.     t = f(a) & ";" & f(b) & ";" & f(c) & ";" & f(d) & ";" & f(e)
  13.                     
  14.     Next e, d, c, b, a
  15. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 18:30 , Processed in 0.352613 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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