By Angeliton miercuri, 29 decembrie 2021
postat în Excel
Răspunsuri 5
Preferințe 0
Vizualizări 7.9 K
Voturi 0
Acest cod VBA: Liste toate as permutações possíveis no Excel, precis de uma modificão nele na forma de intrare, care este în 'MsgBox' and eu precis that seja em uma selection of 1 coluna, ea quantidade de linha dentro das linhas selecionadas, e posibil fazer a modificação no code.
Spuneți „MsgBox „Prea multe permutări!”, vbInformation, „Kutools pentru Excel””
Entra 'seleção de 1 coluna/linhas.
exemplu
linhas selecionadas 12345678 permutar 5 das 8 continuando 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
Salut Angeliton,

Am văzut codul tău, dar nu prea te înțeleg. Poți vorbi în engleză?

Amanda
·
de ani în urmă 2
·
0 Îi place
·
0 Voturi
·
4 Comentarii
·
Acest cod VBA: enumerați toate permutările posibile în Excel, am nevoie de o modificare în el sub formă de intrare, care este în „MsgBox” și trebuie să fie într-o selecție de 1 coloană și cantitatea de rând din cadrul selectat linii, și posibil să se facă modificarea în cod.
răspuns răspuns
Iese din „MsgBox”, „Prea multe permutări!”, vbInformation, „Kutools pentru Excel”’ Care este doar digitizat și nu prin selecție
Introduceți „Selectare 1 coloană/rânduri.
exemplu
rândurile unei coloane selectate 12345678 5 din 8 continuând astfel în cod.
începe 12345
se termină în 87654. introducerea datelor de observație prin selecție în coloană
·
de ani în urmă 2
·
0 Îi place
·
0 Voturi
·
4 Comentarii
·
Salut Angeliton,

Îmi pare rău că nu v-am putut înțelege pe deplin... Sper că puteți reorganiza cuvântul.

Mulțumesc în avans.
Amanda
·
de ani în urmă 2
·
0 Îi place
·
0 Voturi
·
4 Comentarii
·
Bună Amanda Lee, acest cod are date de intrare pentru a fi schimbate / posibile combinații în MsgBox „Prea multe permutări!”, vbInformation, „Kutools pentru Excel”
Am nevoie de date de intrare pentru a fi schimbate/combinații posibile în selecția coloanei.
exemplu
coloana 1
1 linie = alb
2 linie = negru
3 Linie = albastru
4 linie = galben
5 linie = verde
Aceste linii se vor schimba în toate combinațiile posibile, codul face deja asta, așa că nu pot selecta liniile de permutare, deoarece intrarea este un MsgBox care este tastat și nu selectat.
codul complet este aici: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
·
de ani în urmă 2
·
0 Îi place
·
0 Voturi
·
4 Comentarii
·
Salut Angeliton,

Scuze pentru raspunsul intarziat.

Vă rugăm să încercați codul de mai jos: (Rețineți că codul nu procesează un șir cu peste 8 caractere. Dacă doriți să măriți numărul, puteți schimba numărul 8 din „Dacă Len(xStr) >= 8 Atunci” în codificați la numere mai mari. Cu toate acestea, cu cât numărul este mai mare, cu atât programul ar fi mai lent.)

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


Sper că acest lucru funcționează pentru dvs.

Amanda
·
de ani în urmă 2
·
0 Îi place
·
0 Voturi
·
4 Comentarii
·
Vizualizați mesajul complet