ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Permutation combination of a 4 digit no (https://www.excelbanter.com/excel-discussion-misc-queries/154925-permutation-combination-4-digit-no.html)

[email protected]

Permutation combination of a 4 digit no
 
I would like to list all the combinations of a digit 4 number ie;
1234. Pls help tq.


Mike H

Permutation combination of a 4 digit no
 
Hi,

Try this courtesy of John Walknenbach:-

Dim CurrentRow

Sub GetString()
Dim InString As String
InString = InputBox("Enter text to permute:")
If Len(InString) < 2 Then Exit Sub
If Len(InString) = 8 Then
MsgBox "Too many permutations!"
Exit Sub
Else
ActiveSheet.Columns(1).Clear
CurrentRow = 1
Call GetPermutation("", InString)
End If
End Sub

Sub GetPermutation(x As String, y As String)
' The source of this algorithm is unknown
Dim i As Integer, j As Integer
j = Len(y)
If j < 2 Then
Cells(CurrentRow, 1) = x & y
CurrentRow = CurrentRow + 1
Else
For i = 1 To j
Call GetPermutation(x + Mid(y, i, 1), _
Left(y, i - 1) + Right(y, j - i))
Next
End If
End Sub



" wrote:

I would like to list all the combinations of a digit 4 number ie;
1234. Pls help tq.



Gord Dibben

Permutation combination of a 4 digit no
 
Dim CurrentRow

Sub GetString()
Dim InString As String
msg = "Do You Want to Add a Sheet Y/N" & Chr(13) _
& "If No, Column A Will be Overwritten"

Ans = MsgBox(msg, vbQuestion + vbYesNoCancel)
Select Case Ans
Case vbYes
Sheets.Add
Case vbNo
GoTo carryon
Case vbCancel
Cancel = True
Exit Sub
End Select
carryon:
InString = InputBox("Enter text to permute:")
If Len(InString) < 2 Then Exit Sub
If Len(s) = 8 Then
MsgBox "Too many permutations!"
Exit Sub
Else
ActiveSheet.Columns(1).Clear
CurrentRow = 1
Call GetPermutation("", InString)
End If
End Sub

Sub GetPermutation(x As String, y As String)
' The source of this algorithm is unknown
Dim i As Integer, J As Integer
J = Len(y)
If J < 2 Then
Cells(CurrentRow, 1) = x & y
CurrentRow = CurrentRow + 1
Else
For i = 1 To J
Call GetPermutation(x + Mid(y, i, 1), _
Left(y, i - 1) + Right(y, J - i))
Next
End If
End Sub


Gord Dibben MS Excel MVP


On Mon, 20 Aug 2007 07:00:16 -0000, wrote:

I would like to list all the combinations of a digit 4 number ie;
1234. Pls help tq.




All times are GMT +1. The time now is 10:21 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com