永发信息网

EXCEL 1--10个数字不重复具体排列组合

答案:3  悬赏:30  手机版
解决时间 2021-11-17 21:23
  • 提问者网友:趣果有间
  • 2021-11-16 23:22
EXCEL 1--10个数字不重复具体排列组合
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-11-16 23:48
条件1:不包含0
条件2:不得有重复数字
范围:12345~98765
符合的数字有 57205个,

右击工作表标签→查看代码,把下面的代码贴到VBE中,按F5运行,结果粘贴到A列

Sub chiefzjh()
Dim mStr$, i, k%, Tmp$, mDic
Set mDic = CreateObject("scripting.dictionary")
mStr = "123456789"
For i = 12345 To 98765
If InStr(i, "0") = 0 Then 'No "O" exit
For k = 1 To 4 'No duplicate finger
If 5 - Len(Replace(i, Mid(i, k, 1), "")) >= 2 Then Exit For
Next k
mDic.Add i, "" 'Add to Dic
End If
Next i
i = mDic.Count
Range("a1").Resize(i, 1) = WorksheetFunction.Transpose(mDic.keys)
End Sub
全部回答
  • 1楼网友:春色三分
  • 2021-11-17 00:59
Sub 组合()
    intRow = 1
    Dim arr1(4)
    For i = 1 To 10
        arr1(0) = i
        For j = 1 To 10
            If (arr1(0) < j) Then
                arr1(1) = j
                For k = 1 To 10
                    If (arr1(0) < k And arr1(1) < k) Then
                        arr1(2) = k
                        For l = 1 To 10
                            If (arr1(0) < l And arr1(1) < l And arr1(2) < l) Then
                                arr1(3) = l
                                For m = 1 To 10
                                    If (arr1(0) < m And arr1(1) < m And arr1(2) < m And arr1(3) < m) Then
                                        arr1(4) = m
                                        Cells(intRow, 1).Value = Join(arr1, " ")
                                        intRow = intRow + 1
                                    End If
                                Next
                            End If
                        Next
                    End If
                Next
            End If
        Next
    Next
End Sub

如果是要排列,则把所有的<都改成<>

  • 2楼网友:猎心人
  • 2021-11-17 00:18

不用VB不好弄的!我用一种比较笨的算法,然后用VBA生成的,自己看附件哈,应该就是你说的那样的,

Option Explicit

Sub combin()
    Dim i, j, l, k, n, m
    For i = 1 To 6
        For j = i + 1 To 7
            For l = j + 1 To 8
                For k = l + 1 To 9
                    For n = k + 1 To 10
                        m = m + 1
                        Sheet1.Range("a" & m) = i & " " & j & " " & l & " " & k & " " & n
                    Next n
                Next k
            Next l
        Next j
    Next i
End Sub


我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯