kinghai 发表于 2014-11-22 19:12:12

如何用excel简便的求出排列组合的所有结果?

本帖最后由 kinghai 于 2014-11-22 19:16 编辑

如图片中描述,情形若有5种以上,有什么简单方法像土方法那样列出所有组合而不遗漏

solisgood 发表于 2014-11-22 19:27:36

1、建立一个3*3的表格(简化,方便理解,A1:C3),表格内随机填入0-100范围内的数;

2、在下面任一空白行开始,如在A5,输入“=OFFSET(A$1,MOD(INT((ROW(A1)-1)/3^(3-COLUMN())),3),)”,回车然后右拉至C5,再下拉3*3*3=27行,此时所有组合均出来了;

3、选中A5:C31,复制,在A33处粘帖,选择“只有值”,在D33求和(输入“=A33+B33+C3
3”回车)并双击小黑点,得到所有组合的和;

4、选中A33:D59,选择“数据”“排序”,按列D排列,就可以得到所有组合按大小排列;

5、选中A33:A59,选择“编辑”“替换”,将“A1的数据”替换为“A1”,“A2的数据”替换为“A2”,依此类推,直到A1-C3都替换出来。

大功告成,这样就可以知道,最大的组合是由哪几个位置上的数据组成,同理,最小的,或者排第10位的等等都一目了然了。哈哈哈~~虽然有点机械

如果想建立10*4的表格,则公式变为“=OFFSET(A$1,MOD(INT((ROW(A1)-1)/4^(10-COLUMN())),4),)”,依此类推。

prow 发表于 2014-11-22 19:12:13

以三种情况举例:
先在A1:C1写上0,在右边任一一列写上0-(2^3-1)

然后在A2位置写上公式:=FLOOR(MOD(E2/(2^2),2),1)

然后在B2位置写上公式:=FLOOR(MOD(E2/(2^1),2),1)
然后在C2位置写上公式:=FLOOR(MOD(E2/(2^0),2),1)
得到:

然后一拉就ok

要是把0换成L 把1换成H,就先把数据复制

然后右键选“选择性粘贴”-“值和公式”

然后再替换功能把0换成L 1换成H就行了

kinghai 发表于 2014-11-22 20:28:34

不错,是个方法{:victory:}

t35720864 发表于 2014-11-22 21:31:31

excel我觉得在office里面是最难的!
页: [1]
查看完整版本: 如何用excel简便的求出排列组合的所有结果?