excel怎么列出所有的排列组合?

例如:A列的4个数里选3个数进行组合,并且每个数都不重复,用excel能实现吗?
比如,需要在4个数里,2537,选3个组合,列出所有结果,并且不重复的排列。

如果全都是4选3,且每隔4个有一个空单元格的话,可用下列方法:

1、选中A列,点击【数据】选项卡下的【分列】,一直下一步到最后,数据格式选择文本,然后点击完成。

2、在B1输入:=IF(A1="","",REPLACE(PHONETIC(INDIRECT("a"&(MIN(IF(A1:A5="",ROW(A1:A5),9999))-4)&":"&"a"&(MIN(IF(A1:A5="",ROW(A1:A5),9999))-1))),MIN(IF(A1:A5="",ROW(A1:A5),9999))-ROW(A1),1,""))然后同时按ctrl shift enter结束。

3、选中B1,鼠标移到B1右下角,按住并往下托拉即可。

注:如果是5选4等类型,可将公式中的A1:A5改成A1:A6,-4改成-5即可。同理,还可改成6选5,7选6等。以此类推。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-13

Excel怎样从数据集选r个数据排列组合列表(一)

第2个回答  2019-08-10
结合你之后的追问,其实你要问的不是排列,而是“不重复的组合”。所以只需要在B1单元格输入=REPLACE($A$1&$A$2&$A$3&$A$4,ROW(A1),1,"")下拉就可以了。不过这个得到的是文本型的,如果你要得到数字型的,就在“=”后加上“--”就可以。
"4个取3个" 对应的就是 “4个扣掉1个”本回答被提问者采纳
第3个回答  2019-08-08
可以用下面的代码:
Sub test()
For i =1 to 4
s=“”
For j=0 to 2
s=s & cells(i +j,1)
next
Celks(i,2)=s
Next
end sub追问

直接粘贴的,不行

追答

写错了,Celks改为Cells

追问

这根本不是我要的,后面都不是3个数了。

第4个回答  2019-08-08
不用宏的方法:规则一样的话(4取3),可以先穷举一列,然后用公式替换
A列写:

1
2
3
4
B列粘贴:
123
124
132
134
142
143
234
231
243
241
213
214
341
342
314
312
324
321
412
413
421
423
431
432
C列:
A
B
C
D
D1写入公式:=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,A$1,C$1),A$2,C$2),A$3,C$3),A$4,C$4)
下拉
后面可以循环使用追问

123,213,312 这些都是123,算重复了

相似回答