
Excel有排列组合公式,PERMUT为排列函数,COMBIN为组合函数。
1、电脑打开Excel表格,输入组合函数=COMBIN(50,3)。
2、回车就会得到19600。
3、输入排列公式=PERMUT(50,3)/PERMUT(3,3)。
4、回车就可以了。
可以参考我原来的一个回答《数字1至10,每5个数字作为一个组合。一共有多少个组合?如何在EXCEL中列出来》
网页链接
用excel2016自带的power query实现。2010或2013可以安装插件。
思路:先设计一个包含1-10的表,对这个表进行4次自关联,再对形成的5个数字中,不重复的内容进行保留即可。
添加自定义列“a”
通过复制粘贴,形成第二个查询:表1(2)
切换到表1(2),对表1进行合并查询
对上图中查询结束后出现的内容右上角的小箭头点一下,只保留列1
重复此 *** 作,变成如下结果
删除自定义列,并把其他几列分别改名为列2,列3,列4,列5
新添加一个自定义列,如图,内容为
NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},1))+NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},2))+NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},3))+NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},4))+NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},5))+NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},6))+NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},7))+NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},8))+NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},9))+NumberFrom(ListContains({[列1],[列2],[列3],[列4],[列5]},10))
意思是,看在列1-列5中,是否含1,是否含2……,再把它们相加,就可以判断,如果这个和为5,就说明不重复了
对新加的列进行筛选,只留下5注意,如果列表中没有5,就可能加载不全,点一下右下角的“加载更多”
最后,删除自定义列,再点关闭并上载就可以了。
Sub a()
Dim a%
a = 1
For i = 65 To 68
For j = 65 To 68
For k = 65 To 68
For b = 65 To 68
If i <> j And j <> k And k <> b And i <> k And i <> b And j <> b Then
Range("A" & a) = Chr(i) & Chr(j) & Chr(k) & Chr(b)
a = a + 1
End If
Next b
Next k
Next j
Next i
End Sub
用循环嵌套进行 就可以,下图的是 4列的宏代码
Sub a()
Dim a, b, c, d As Integer
a = Sheets(1)[a65536]End(xlUp)Row
b = Sheets(1)[b65536]End(xlUp)Row
c = Sheets(1)[c65536]End(xlUp)Row
d = Sheets(1)[d65536]End(xlUp)Row
For i = 1 To a
For p = 1 To b
For q = 1 To c
For t = 1 To d
x = x + 1
Cells(x, 7)Value = Cells(i, 1)Value & Cells(p, 2)Value & Cells(q, 3)Value & Cells(t, 4)Value
Next
Next
Next
Next
End Sub
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)