ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 函数与公式 > 8个数据以内的组合

8个数据以内的组合

作者:绿色风 分类: 时间:2022-08-17 浏览:290
楼主
gouweicao78
函数做组合实在不是一个好的方法,附件是以前做的8个、12个以内的组合(12个的可能有误,好久没验证,再说速度也慢,方法是基本相同的,因此建议不要看它),有兴趣的可以玩一下:

8个以内组合.rar


谢谢Apolloh提醒,本帖是组合而不是排列,原先把排列和组合混淆了。

顺便,也说一下排列和组合的区别
1、排列:从n个不同元素中,任取m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列.

  从排列的意义可知,如果两个排列相同,不仅这两个排列的元素必须完全相同,而且排列的顺序必须完全相同,这就告诉了我们如何判断两个排列是否相同的方法.
2、组合:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从 n个不同元素中取出m个元素的一个组合.

  从组合的定义知,如果两个组合中的元素完全相同,不管元素的顺序如何,都是相同的组合;只有当两个组合中的元素不完全相同时,才是不同的组合.

举例:从1、2、3这3个数字选取3个的排列有:123、132、312、321、213、231共6种,Excel的计算为=PERMUT(3,3)得到6,而组合仅1种,=COMBIN(3,3)得到1。
2楼
gouweicao78
可完成8选1、2、3、4……7、8等情况下的排列组合方式。
注意:
1、COMBIN(8,1)=8……COMBIN(8,4)=70……最大的组合数是70,也就是说公式最多只需要70行。
2、COMBIN(8,1)+COMBIN(8,2)……+COMBIN(8,8)=255,本解法采用枚举法,把这255种组合情况都列举出来再判定是否满足个数要求。
【公式解释】
【定义名称1】
  1. mmult1=MMULT(MOD(INT(ROW(Sheet1!$1:$255)/2^{7,6,5,4,3,2,1,0}),2),10^{7;6;5;4;3;2;1;0})
将8选1、8选2……8选8的共255种排列组合方式都在内存数组mmult1列出。
公式中,Row($1:$255)的255这个数字根据所有组合数之和决定。
2^{7,6,5,4,3,2,1,0}根据备选组合的元素个数决定,例子中是8个。如果是6个备选元素,则为2^{5,4,3,2,1,0}。
【定义名称2】
  1. text=TEXT(SMALL(IF(MMULT(N(MID(TEXT(mmult1,"00000000"),{1,2,3,4,5,6,7,8},1)="1"),{1;1;1;1;1;1;1;1})=Sheet1!$J$2,mmult1),ROW(Sheet1!1:1)),"00000000")
也就是将mmult1用8位数来表示,比如00000011,00000101等,有2个1表示由8选2,有3个1则表示8选3……
由此取出1个数与J2单元格输入的个数相同的所有组合,并以8位数表示。
【公式】
  1. =IF(COLUMN(A:A)>$J$2,"",IF(ROW(1:1)>COMBIN(8,$J$2),"",INDEX($A$2:$H$2,SMALL(IF(-MID(text,{1,2,3,4,5,6,7,8},1),{1,2,3,4,5,6,7,8}),COLUMN(A:A)))))
表示,列超过J2的个数、行超过组合数,都返回空文本,否则根据text来返回排列组合。

比如:
00010011——这是一个8选3的组合方式,表示由第4、7、8个元素组成。
00000011——这是一个8选2的组合方式,表示由第7、8个元素组成。

解法限制】因为MMULT函数所返回的结果不能超过5641个,这限制了排列组合元素不能超过12个。因为SUM(COMBIN(12,ROW(1:12)))=4095个,SUM(COMBIN(13,ROW(1:13)))=8191个。

不过,备选元素到12个的时候,其运算速度已经不是普通配置的机器能忍受的了。
3楼
aob
谢谢分享,收藏学习
4楼
wangqilong1980
收藏,慢慢学习
5楼
guiyan
我需要个10个数据的....下载了这个..自己修改了一晚上..结果还是不行....
谁能帮帮忙哦.....急需......先谢谢大家了...
6楼
goshin01
学习学习,谢谢!
7楼
水之歌
学习来了,谢谢分享,
8楼
E林好汉
谢谢分享!
9楼
lrlxxqxa
数据组合
10楼
rongjun
学习了!
11楼
海洋之星
谢谢分享,哈哈

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap