10个数字的所有可能组合,并在excel中重复

10个数字的所有可能组合,并在excel中重复,excel,macros,permutation,vba,Excel,Macros,Permutation,Vba,如何在Excel中生成长度为5的所有可能的数字组合{0,1,2,3,4,5,6,7,8,9}。我知道有10^5种可能的重复组合。 谢谢对elene的代码稍作修改 这可能会运行得更快一些: Sub combinations() Dim wb As Workbook, i As Integer, strFileName As String 'Create Temp Workbook for data source Set wb = Workbooks.Add With wb.ActiveShee

如何在Excel中生成长度为5的所有可能的数字组合{0,1,2,3,4,5,6,7,8,9}。我知道有10^5种可能的重复组合。
谢谢

对elene的代码稍作修改


这可能会运行得更快一些:

Sub combinations()
Dim wb As Workbook, i As Integer, strFileName As String

'Create Temp Workbook for data source
Set wb = Workbooks.Add
With wb.ActiveSheet
    .Range("A1").Value = "Integer"
    For i = 0 To 9
        .Range("A" & i + 2).Value = i
    Next i
End With
strFileName = "C:\Temp\Temp.xlsx"
wb.SaveAs strFileName
wb.Close False

'Create List using Temp Workbook as source(s)
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array("ODBC;DBQ=" & strFileName & ";DefaultDir=C:\temp;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;FIL=exce"), Array("l 12.0;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ReadOnly=1;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;")), Destination:=Range("$A$1")).QueryTable
    .CommandText = Array( _
    "SELECT `Sheet1$`.Integer, `Sheet1$_1`.Integer, `Sheet1$_2`.Integer, `Sheet1$_3`.Integer, `Sheet1$_4`.Integer" & Chr(13) & "" & Chr(10) & "FROM `" & strFileName & "`.`Sheet1$` `Sheet1$`, `" & strFileName & "`.`Sheet1$` `Sheet1$_1`, `", strFileName & "`.`Sheet1$` `Sheet1$_2`, `" & strFileName & "`.`Sheet1$` `Sheet1$_3`, `" & strFileName & "`.`Sheet1$` `Sheet1$_4`")
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = False
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .ListObject.DisplayName = "Table_Query_from_Temp"
    .Refresh BackgroundQuery:=False
End With

'Convert back to range
ActiveSheet.ListObjects("Table_Query_from_Temp").Unlist

'Delete top row
Rows("1:1").Delete

'Delete Temp file
Kill strFileName
End Sub

比原来快多了。对于数组方法来说,可能不太多。这至少是一种不同的技术…

好吧,我用宏
Sub-qwerty()实现了I=0到9,j=0到9,k=0到9,a=0到9,b=0到9,LL=LL+1个单元格(LL,1)=I个单元格(LL,2)=j单元格(LL,3)=k单元格(LL,4)=a单元格(LL,5)=b下一个b下一个a下一个k下一个j下一个i End Sub
如果有人有更好的答案,请放心,如果术语是“10个组合中的5个”,那么在我看来9,9,9,8,0和0,8,9,9,9和8,0,9,9,9和9,8,0,9,9和。。。是完全相同的组合:3乘以9,1乘以8,1乘以0。考虑到这一点,只有2002个组合可以重复。
Sub combinations()
Dim wb As Workbook, i As Integer, strFileName As String

'Create Temp Workbook for data source
Set wb = Workbooks.Add
With wb.ActiveSheet
    .Range("A1").Value = "Integer"
    For i = 0 To 9
        .Range("A" & i + 2).Value = i
    Next i
End With
strFileName = "C:\Temp\Temp.xlsx"
wb.SaveAs strFileName
wb.Close False

'Create List using Temp Workbook as source(s)
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array("ODBC;DBQ=" & strFileName & ";DefaultDir=C:\temp;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;FIL=exce"), Array("l 12.0;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;ReadOnly=1;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;")), Destination:=Range("$A$1")).QueryTable
    .CommandText = Array( _
    "SELECT `Sheet1$`.Integer, `Sheet1$_1`.Integer, `Sheet1$_2`.Integer, `Sheet1$_3`.Integer, `Sheet1$_4`.Integer" & Chr(13) & "" & Chr(10) & "FROM `" & strFileName & "`.`Sheet1$` `Sheet1$`, `" & strFileName & "`.`Sheet1$` `Sheet1$_1`, `", strFileName & "`.`Sheet1$` `Sheet1$_2`, `" & strFileName & "`.`Sheet1$` `Sheet1$_3`, `" & strFileName & "`.`Sheet1$` `Sheet1$_4`")
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = False
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .ListObject.DisplayName = "Table_Query_from_Temp"
    .Refresh BackgroundQuery:=False
End With

'Convert back to range
ActiveSheet.ListObjects("Table_Query_from_Temp").Unlist

'Delete top row
Rows("1:1").Delete

'Delete Temp file
Kill strFileName
End Sub