By Angeliton am Mittwoch, den 29. Dezember 2021
Veröffentlicht in Excel
Antworten 5
Likes 0
Views 7.8k
Bewertungen 0
Dieser VBA-Code: Listen Sie alle möglichen Optionen in Excel auf. Geben Sie eine Änderung in der Eingabeaufforderung ein, die sich in der „MsgBox“ befindet, und stellen Sie sicher, dass Sie in einer Spalte eine Auswahl getroffen haben, und geben Sie die gewünschte Zeilenanzahl an die ausgewählten Zeilen an, z Möglicherweise müssen Sie den Code ändern.
Sagen Sie 'MsgBox "Too much permutations!", vbInformation, "Kutools for Excel"' Dies ist ein bisschen digital und wurde nicht ausgewählt
Entra 'seleção de 1 coluna/linhas.
Beispiel
Linhas selecionadas 12345678 permutar 5 das 8 continando como esta no codigo.
Começa 12345
'termina em 87654.

'Sub
GetString()

'Updateby Extendoffice

    
Dim
xStr 
As
String

    
Dim
FRow 
As
Long

    
Dim
xScreen 
As
Boolean

    
xScreen = Application.ScreenUpdating

    
Application.ScreenUpdating = 
False

    
xStr = Application.InputBox(
"Enter text to permute:"
"Kutools for Excel"
, , , , , , 2)

    
If
Len(xStr) < 2 
Then
Exit
Sub

    
If
Len(xStr) >= 8 
Then

        
MsgBox 
"Too many permutations!"
, vbInformation, 
"Kutools for Excel"

        
Exit
Sub

    
Else

        
ActiveSheet.Columns(1).Clear

        
FRow = 1

        
Call
GetPermutation(
""
, xStr, FRow)

    
End
If

    
Application.ScreenUpdating = xScreen

End
Sub

Sub
GetPermutation(Str1 
As
String
, Str2 
As
String
ByRef
xRow 
As
Long
)

    
Dim
As
Integer
, xLen 
As
Integer

    
xLen = Len(Str2)

    
If
xLen < 2 
Then

        
Range(
"A"
& xRow) = Str1 & Str2

        
xRow = xRow + 1

    
Else

        
For
i = 1 
To
xLen

            
Call
GetPermutation(Str1 + Mid(Str2, i, 1), Left(Str2, i - 1) + Right(Str2, xLen - i), xRow)

        
Next

    
End
If

'End
Sub
Hallo Angeliton,

Ich habe deinen Code gesehen, aber ich verstehe dich nicht ganz. Sprechen Sie Englisch?

Amandas
·
2 Jahren
·
0 Likes
·
0 Stimmen
·
0 Kommentare
·
Dieser VBA-Code: Listen Sie alle möglichen Permutationen in Excel auf. Ich benötige eine Änderung darin in Form einer Eingabe, die sich in „MsgBox“ befindet, und ich brauche sie in einer Auswahl von 1 Spalte und der Anzahl der Zeilen innerhalb der ausgewählten Spalte Zeilen, und es ist möglich, die Änderung im Code vorzunehmen.
Antwort antworten
Beendet „MsgBox“, „Zu viele Permutationen!“, „vbInformation“, „Kutools for Excel“‘, das nur digitalisiert und nicht durch Auswahl erfolgt
Geben Sie „1 Spalten-/Zeilenauswahl“ ein.
Beispiel
Zeilen einer ausgewählten Spalte 12345678 5 der 8 Fortsetzung so im Code.
beginnt 12345
endet mit 87654. Beobachtungsdateneingabe durch Auswahl in der Spalte
·
2 Jahren
·
0 Likes
·
0 Stimmen
·
0 Kommentare
·
Hallo Angeliton,

Es tut mir so leid, dass ich Sie nicht ganz verstehen konnte ... Ich hoffe, Sie können das Wort umstellen.

Vielen Dank im Voraus.
Amandas
·
2 Jahren
·
0 Likes
·
0 Stimmen
·
0 Kommentare
·
Hallo Amanda Lee, dieser Code enthält auszutauschende Eingabedaten/mögliche Kombinationen in MsgBox „Zu viele Permutationen!“, vbInformation, „Kutools for Excel“
Ich benötige Eingabedaten, die bei der Spaltenauswahl vertauscht werden sollen/mögliche Kombinationen.
Beispiel
Spalte 1
1 Zeile = weiß
2-zeilig = schwarz
3 Linie = blau
4 Zeile = gelb
5 Zeile = grün
Diese Zeilen werden in allen möglichen Kombinationen vertauscht, der Code tut dies bereits, sodass ich die Permutationszeilen nicht auswählen kann, da die Eingabe eine MsgBox ist, die eingegeben und nicht ausgewählt wurde.
Der vollständige Code ist hier: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
·
2 Jahren
·
0 Likes
·
0 Stimmen
·
0 Kommentare
·
Hallo Angeliton,

Entschuldigung für die späte Antwort.

Bitte probieren Sie den folgenden Code aus: (Beachten Sie, dass der Code keine Zeichenfolge mit mehr als 8 Zeichen verarbeitet. Wenn Sie die Zahl vergrößern möchten, können Sie die Zahl 8 von „If Len(xStr) >= 8 Then“ in ändern Code in größere Zahlen umwandeln. Je größer die Zahl ist, desto langsamer wäre das Programm.)

Sub GetString()
'Updateby Extendoffice
Dim xStr As String
Dim FRow As Long
Dim xScreen As Boolean
Dim Rg, xRg As Range
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
Set xRg = Application.InputBox("Enter text to permute:", "Kutools for Excel", , , , , , 8)
xStr = ""
For Each Rg In xRg
xStr = xStr + Rg.Text
Next
If Len(xStr) < 2 Then Exit Sub
If Len(xStr) >= 8 Then
MsgBox "Too many permutations!", vbInformation, "Kutools for Excel"
Exit Sub
Else
ActiveSheet.Columns(1).Clear
FRow = 1
Call GetPermutation("", xStr, FRow)
End If
Application.ScreenUpdating = xScreen
End Sub
Sub GetPermutation(Str1 As String, Str2 As String, ByRef xRow As Long)
Dim i As Integer, xLen As Integer
xLen = Len(Str2)
If xLen < 2 Then
Range("A" & xRow) = Str1 & Str2
xRow = xRow + 1
Else
For i = 1 To xLen
Call GetPermutation(Str1 + Mid(Str2, i, 1), Left(Str2, i - 1) + Right(Str2, xLen - i), xRow)
Next
End If
End Sub


Hoffe das funktioniert für dich.

Amandas
·
2 Jahren
·
0 Likes
·
0 Stimmen
·
0 Kommentare
·
Vollständigen Beitrag anzeigen