Office中国论坛/Access中国论坛

标题: 关于组合的问题。。 [打印本页]

作者: leslie0705    时间: 2011-2-4 01:58
标题: 关于组合的问题。。
本帖最后由 leslie0705 于 2011-2-4 02:06 编辑

大家新年好啊!
我想请教一个问题,在sheet1中有6个一行的数字,我要用组合选出2个数字,
就是说在sheet2中相对的行要列出其15种的组合。。
然后sheet3把sheet2的计算区域(B2:P24)按次数统计出来,按降序排列,然后把属于该次数的组合也列出来。因为可能组合比较多,所以sheet3的话最好能过了P列之后自动换行,在下行的B列继续。。
其实我只要sheet3就可以了,如果可以的话,那就直接用VBA编写出来就好了,但sheet1表中的列数是不变的(总是6列),行数无限,我需要sheet3按因为sheet1更新而更新。
[attach]44761[/attach]


作者: pureshadow    时间: 2011-2-4 17:46
姐姐,你是玩彩的吗~~~~~~~~~这样太折腾EXCEL了
作者: roych    时间: 2011-2-5 01:17
本帖最后由 roych 于 2011-2-5 01:50 编辑
pureshadow 发表于 2011-2-4 17:46
姐姐,你是玩彩的吗~~~~~~~~~这样太折腾EXCEL了

我比较同意小妖姐姐的看法~~不仅折腾Excel,我们这些老鸟都给蹂躏得近乎崩溃。。。尽管如此,本着人道主义,俺还是写了个实例传上来吧。
[attach]44764[/attach]
以下是一些说明,可看可不看:
1、这次是用Collection数据集来提取不重复值放在B列里,——记录集(Recordset)也可以实现,只是我懒得写14个Union SQL语句罢了。
     值得一提的是,这和你的附件格式不同,是因为出现一次的组合实在太多了,在同一行里放不下(2003版本只能放256列),——当然,如果你用的是2007版本,也许可以用数据透视表来处理,勾上打开时刷新之后,格式就一模一样了。
2、我在C列用了内置函数Countif来统计出现次数。——事实上,这并非高明的法子,定义好动态列,用名称来处理会更好些。不过既然你发在VBA模块里,小生姑且为之吧。



作者: leslie0705    时间: 2011-2-5 07:08
首先谢谢2位大大,新年还上来工作,实在辛苦!
其次,小妖姐姐说对的,无论excel还是乐透,都是刚刚接触,不过我玩的是6选49的大乐透,中奖几率很低的,但我不在中国玩,希望几率会高一些。。。
然后,我还是自我介绍一下吧,我在读IT,其实excel之前有接触,无奈只学了皮毛,所以想升级一下,因为我就要参加工作了,excel对我来说是很有帮助的。所以我是学excel为重,但总得有个目标啊。。到现在为止其实我自己还没买过一期,反正自己选的号,命中率都很低。。6选49,1400W的几率啊。。。
最后,非常感谢ROY大大和小妖姐姐的帮忙。。或许我应该从头开始认真的学,但说实在的,小妖姐姐的视频我都看了,网上也有很多,这么看,不锻炼一下,真的没什么意思。。
嗯嗯,还过年呢,祝2位大大新年快乐!兔年行大运哈!
作者: leslie0705    时间: 2011-2-5 07:11
本帖最后由 leslie0705 于 2011-2-5 07:15 编辑

其实有时候我也很郁闷,我用netbeans编过管理软件,Collection和Recordset在netbeans的用法我都会,我这学期还学了datenbank,SQL语句我也懂得,但怎么在excel在运用,真的不知道。。。
而且我也不是随便就发个问题,叫2位大大解决的。。我在网上找了很长时间,就好像这个问题,我找实例和自己弄都超过4小时了,实在不行才叫2位大大帮忙的。。

作者: pureshadow    时间: 2011-2-5 11:32
从概率学的角度来说,无论怎么算,买彩票中奖的概率都是一样的,除非你把所有注都买下……
作者: roych    时间: 2011-2-5 11:32
Netbeans?听一个朋友说过,好像是Java的一个分支,不过他学的是J2EE。。
按我的学习经历,对于Excel,最多花三个月时间,应该可以学到中等水平了。——实际上,我那时候还在上三班(早中夜班),只是利用业余时间自学的,满打满算可能不足一个月。——当然,如果你的领悟力比较好,逻辑思维比较强的话,应该可以花更短的时间就能学得很好了。以下是个人以为的时间安排:

1、一个月时间学习函数,——当然要自己练习写公式的(如果不够熟练,则多花半个月)。需要说明的是,并非所有函数都要掌握,应该根据实际需要,有选择地学习。像我的话,就跳过了财务函数,因为用不上。。
2、一个月时间学习数组公式;数组公式可以说是普通公式的进化版,数组公式能完成的,普通公式也是可以处理的,只是可能需要多几个辅助列罢了。
3、剩下一个月时间则练习使用图表,特别是加上控件的高级图表。
4、VBA可以暂时放在一边,毕竟这是很个性化的东西,实际应用并不广。例如,我做的这个例子也只是针对你这个特定问题而已,实际工作中,并没有那么多东西一定要用到VBA。

作者: roych    时间: 2011-2-5 11:33
Netbeans?听一个朋友说过,好像是Java的一个分支,不过他学的是J2EE。。
按我的学习经历,对于Excel,最多花三个月时间,应该可以学到中等水平了。——实际上,我那时候还在上三班(早中夜班),只是利用业余时间自学的,满打满算可能不足一个月。——当然,如果你的领悟力比较好,逻辑思维比较强的话,应该可以花更短的时间就能学得很好了。以下是个人以为的时间安排:

1、一个月时间学习函数,——当然要自己练习写公式的(如果不够熟练,则多花半个月)。需要说明的是,并非所有函数都要掌握,应该根据实际需要,有选择地学习。像我的话,就跳过了财务函数,因为用不上。。
2、一个月时间学习数组公式;数组公式可以说是普通公式的进化版,数组公式能完成的,普通公式也是可以处理的,只是可能需要多几个辅助列罢了。
3、剩下一个月时间则练习使用图表,特别是加上控件的高级图表。
4、VBA可以暂时放在一边,毕竟这是很个性化的东西,实际应用并不广。例如,我做的这个例子也只是针对你这个特定问题而已,实际工作中,并没有那么多东西一定要用到VBA。

作者: pureshadow    时间: 2011-2-5 19:18
ROY你太强了,我一个LOOKUP折腾了近两年,INDIRECT折腾了七八个月,OFFSET折腾了大半年,INDEX现在还在迷糊……
作者: roych    时间: 2011-2-6 13:37
坦白地说,我学得没有小妖姐姐那么精细。不过,话用说回来,如果不用到数组,特别是内存数组的话,这几个函数应该都不太难。
Lookup函数常常被我用来代替多重If判断(Lookup+常量数组或者单元格区域);有时当成Vlookup来用~~
Indirect唯一让我郁闷的是前面提到的单引号问题,我顶多加上Row函数作为内存数组以便返回几个工作表数据而已。没用过R1C1格式,——如果非要用到这个,毋宁定义动态列或者写VBA代码算了~~
Offset则往往被我用来定义动态列或者做二级下拉菜单,内存数组比较少用。——其实这个函数博大精深,如果结合了Mmult之类,则功能相当强大。算来我该感到惭愧,很少这样用。
Index嘛,的确很是让人头疼的一个函数,我常用的不外乎要么结合Match当Vlookup来用(特别是逆向查找时),要么结合Small、if、Match等函数用来做条件查询和列举不重复值(这两种方式当然不太一样)。
作者: pureshadow    时间: 2011-2-6 15:16
工作表名是数字或带符号时,引用工作表名会出现单引号,直接引用是自动生成的,在用INDIRECT时不必理会。
作者: pureshadow    时间: 2011-2-6 15:17
INDIRECT是EXCEL中比较恐怖的函数之一,建议新手不要折腾。
作者: pureshadow    时间: 2011-2-6 16:04
这个怎么样
友情提醒,电脑性能一般的请勿打开。。。。

作者: leslie0705    时间: 2011-2-8 11:20
本帖最后由 leslie0705 于 2011-2-8 11:24 编辑

哦哦,谢谢ROY大大的友情提醒,那我现在开始学函数和数组公式好了。。
我在网上找实例的时候,很多人都用VBA来解决问题的,怎么ROY大大说它没什么用呢?
还有哦,小妖姐姐其实你对乐透理解是不完全的。。你说要买全部的号码,但事实上你每注也只能选6个,按你这么说,如果我选1,2,3,4,5,6也能中大奖吗?答案是几乎不可能的。有人统计了美国其中一个州全部期数,同时出现这6个号码的其中3个也是只有0.2%,没有出现同时中4个或以上的情况。。我现在还在学呢,就是关于统计学的东西。。这6个数存在着多种相互排斥的因素,所以几乎不可能同时存在。。
我现在目标也是很明确的,一开始不亏就可以了,之后的事情之后再说,如果选号得当并且组合得当的话,是完全可以做到这点的。。
好嘛,回到excel吧。。我这2天忙着考试呢。。现在就开始学ROY大所说的函数公式!!
再次感谢2位大大的热情帮助!!

作者: roych    时间: 2011-2-8 17:31
leslie0705 发表于 2011-2-8 11:20
哦哦,谢谢ROY大大的友情提醒,那我现在开始学函数和数组公式好了。。
我在网上找实例的时候,很多人都用V ...

不能说VBA没什么用。
我跟很多同事都是这样说的,能用其它命令时就不要用公式(例如分列可以提取字符,而不一定非要用left\right等函数);能用公式时就别用数组(数组对内存要求要高一些),数组可以解决的问题则不要用VBA(代码的调试成本并不低)。
在实际工作中,真正非要用VBA不可的并不多。——或许你可能觉得,写一个系统就得用到VBA呀。不过,我想说的是,如果非要写一个系统,为什么不使用Access呢?它运行起来,比Excel不是更好么?




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3