排列组合 1列数 excel

如 A B C D

我要得到ABCD ABDC ACBD ACDB ADBC ADCB BACD .....等等不罗列了 一直到DCBA

给出公式

亲,可以用公式,不过最好用VBA。因为数据比较多的时候,数组公式运行起来会很慢。

请查收附件。演示效果和代码如下:

Sub pl()
Dim MyArr(1 To 4), ss As String
Dim i, j, n1, n2, n3, n4 As Long
ss = "ABCD"
Range("A:A").ClearContents
For n1 = 1 To 4
    For n2 = 1 To 4
        If n1 <> n2 Then
            For n3 = 1 To 4
                If n3 <> n1 And n3 <> n2 Then
                    For n4 = 1 To 4
                        If n4 <> n1 And n4 <> n2 And n4 <> n3 Then
                            If Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(Mid(ss, n1, 1) & Mid(ss, n2, 1) & Mid(ss, n3, 1) & Mid(ss, n4, 1)) Is Nothing Then
                                If Range("A1") = "" Then
                                    Range("A1") = Mid(ss, n1, 1) & Mid(ss, n2, 1) & Mid(ss, n3, 1) & Mid(ss, n4, 1)
                                Else
                                    Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = Mid(ss, n1, 1) & Mid(ss, n2, 1) & Mid(ss, n3, 1) & Mid(ss, n4, 1)
                                End If
                            End If
                        End If
                    Next
                End If
            Next n3
        End If
     Next n2
Next n1
End Sub

 

追问

如果我的
A换成了ABCD
B换成了wxyz
C换成了1234
D换成了9876

追答

四个字符当成一组去参加排列吗?还是全部连成16个字符,全排列?

追问

4个字符为固定的一组

追答

嗯,要改一下代码,定义一个数组变量。明天发给你,今天太晚要休息了,抱歉哈~~~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-07
这有24个组合,用函数还真不知道怎么做。
相似回答