Excel精英培训网

 找回密码
 注册
查看: 6078|回复: 3

数字排列组合公式写法

[复制链接]
发表于 2012-6-1 13:02 | 显示全部楼层 |阅读模式
数字排列组合公式的思路,可以这样理解:从n个不同元素中,任取m(m≤n)个元素按照一定的顺序排成一列。  下面通过一个实例来讲解如何通过排列组合公式完成数字排列组合。
  比如从"9876543"中任意取5个数来进行排列组合,方法是:
  新建一个工作表,按ALT+F11,打开VBE编辑器,插入——模块,在右边代码编辑框复制下面的代码,然后单击工具栏的“运行”命令,然后切换到工作表中,可以看见A列已经根据排列组合公式自动生成了所需要的所有数字排列组合。
Sub 排列组合公式()
Dim II%, I%, J%, K%, L%, M%
Dim Srt1$, Srt2$, Srt3$, Srt4$, Srt5$
Dim TStr1$, TStr2$, TStr3$, TStr4$
Dim t, arr()
Const FullStr = "9876543"
t = Timer
II = 0
For I = 1 To 7
    Srt1 = Mid(FullStr, I, 1)
    TStr1 = Replace(FullStr, Srt1, "")
    For J = 1 To 6
        Srt2 = Mid(TStr1, J, 1)
        TStr2 = Replace(TStr1, Srt2, "")
        For K = 1 To 5
            Srt3 = Mid(TStr2, K, 1)
            TStr3 = Replace(TStr2, Srt3, "")
            For L = 1 To 4
                Srt4 = Mid(TStr3, L, 1)
                TStr4 = Replace(TStr3, Srt4, "")
                For M = 1 To 3
                    Srt5 = Mid(TStr3, M, 1)
                    II = II + 1
                    ReDim Preserve arr(1 To II)
                    arr(II) = Srt1 & Srt2 & Srt3 & Srt4 & Srt5
                Next
            Next
        Next
    Next
Next
Range("A1:A" & II) = Application.Transpose(arr)
End Sub

 楼主| 发表于 2012-6-1 13:03 | 显示全部楼层
这正是我长期没有弄得到的  现在懂了{:912:}
回复

使用道具 举报

发表于 2012-7-13 15:10 | 显示全部楼层
请教楼主,如何不管顺序的话,显示所有组合
回复

使用道具 举报

发表于 2017-10-11 06:22 | 显示全部楼层

请教楼主,如何不管顺序的话,显示所有组合
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-11 11:10 , Processed in 0.311100 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表