本帖最后由 百度不到去谷歌 于 2014-3-28 16:27 编辑
不懂算法,你也可以玩M选N组合,你只需要M组合工具
模块插入到你的工程中,就可方便的调用组合方法了
前段时间遇到几个组合问题,当然首先是百度一下,各位前辈高人算法都很厉害,可是众菜鸟们怕是难以理解
不能理解又要用到,怎么办呢,我综合看了几种算法,灰袍法师的算法比较简单,容易理解,便于包装,于是我以
灰袍法师算法为蓝本,对原算法进行了参数化处理,传入参数也做了处理,可直接传进一维数组,以及range区域,
原版只处理数值,这里可处理数值或者字符串,总共打包了3个公共方法详解如下,
'###########M组合工具#算法:灰袍法师--整理:百度不到去谷歌################################
'#功 能:对M个元素选N组合,输出数组,或工作表区域,接口简单,使用方便,可不懂算法直接调用 '#CombinToArr(ArrRng, N%)--按行输出到全局数组ResultArr(),受内存限制 '#CombinToRngByRow(ArrRng, N%, target As Range) --按行依次输出到工作表,受行列数限制 '#CombinToRngByColumn(ArrRng, N%, target As Range) --按第1关键字分列输出到工作表,受行列限制 '#参 数:ArrRng----一维数组,或者rng区域,split得到的数组可直接传入 N----选取个数; target----输出区域左上角单元格 '######################################################################################
有需要的同学可以参考原灰袍法师的帖子 猛击这里http://club.excelhome.net/thread-643613-1-1.html
另外香川群子的组合算法速度很快,不过我理解不深,改造起来比较难,有兴趣可以猛击这里http://club.excelhome.net/thread-643613-1-1.html
VBA - 通用组合工具.rar
(43.65 KB, 下载次数: 785)
|