By Angelitone mercoledì 29 dicembre 2021
pubblicato in Excel
Risposte 5
Mi piace 0
Visualizzazioni 7.9K
voti 0
Este Código VBA: Liste todas as permutações possíveis no Excel, preciso de uma modificão nele na forma de entrada, que está em 'MsgBox' e eu preciso que seja em uma seleção de 1 coluna, ea quantidade de linha dentro das linhas selectionadas, e possivel fazer a modificação no código.
Sai 'MsgBox "Troppe permutazioni!", vbInformation, "Kutools for Excel"' Che è solo digitale e non è stato selezionato
Entra 'seleção de 1 coluna/linhas.
esempio
linhas selectionadas 12345678 permutar 5 das 8 continuando como esta no codigo.
comeca 12345
'terminale 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
Ciao Angelitone,

Ho visto il tuo codice, ma non ti capisco bene. Parla inglese?

Amanda
·
anni fa, 2
·
0 Piace
·
0 Voti
·
Commenti
·
Questo codice VBA: elenca tutte le possibili permutazioni in Excel, ho bisogno di una modifica sotto forma di input, che è in "MsgBox" e ho bisogno che sia in una selezione di 1 colonna e la quantità di riga all'interno del selezionato righe, ed è possibile apportare modifiche al codice.
rispondi rispondi
Esce da 'MsgBox', "Troppe permutazioni!", vbInformation, "Kutools for Excel"' Che è solo digitalizzato e non tramite selezione
Immettere '1 colonna/selezione righe.
esempio
righe di una colonna selezionata 12345678 5 delle 8 che continuano così nel codice.
inizia 12345
termina con 87654. immissione dei dati di osservazione mediante selezione nella colonna
·
anni fa, 2
·
0 Piace
·
0 Voti
·
Commenti
·
Ciao Angelitone,

Mi dispiace tanto di non poterti capire fino in fondo... Spero che tu possa riorganizzare la parola.

Grazie in anticipo.
Amanda
·
anni fa, 2
·
0 Piace
·
0 Voti
·
Commenti
·
Ciao Amanda Lee, questo codice contiene dati di input da scambiare / possibili combinazioni in MsgBox "Troppe permutazioni!", vbInformation, "Kutools per Excel"
Ho bisogno che i dati di input vengano scambiati/possibili combinazioni nella selezione delle colonne.
esempio
colonna 1
1 riga = bianco
2 righe = nero
3 linee = blu
4 righe = giallo
5 righe = verde
Queste righe si scambieranno in tutte le possibili combinazioni, il codice lo fa già, quindi non posso selezionare le righe di permutazione, perché l'input è un MsgBox digitato e non selezionato.
il codice completo è qui: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
·
anni fa, 2
·
0 Piace
·
0 Voti
·
Commenti
·
Ciao Angelitone,

Scusa per il ritardo della risposta.

Si prega di provare il codice seguente: (Nota che il codice non elabora una stringa con più di 8 caratteri. Se vuoi aumentare il numero, puoi cambiare il numero 8 di "If Len(xStr) >= 8 Then" nel codice per numeri più grandi. Tuttavia, più grande è il numero, più lento sarebbe il programma.)

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


Spero che questo funzioni per te.

Amanda
·
anni fa, 2
·
0 Piace
·
0 Voti
·
Commenti
·
Visualizza il post completo