By Angeliton el miércoles, 29 de diciembre de 2021
Publicado en Excel
Respuestas 5
Likes 0
Vistas 7.9K
Votos 0
Este Código VBA: Liste todas las 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 selecionadas, e possivel fazer a modificação no código.
Sai 'MsgBox "¡Demasiadas permutaciones!", vbInformation, "Kutools for Excel"' Que é some digitável e não by seleção
Entra en la selección de 1 coluna/líneas.
ejemplo
líneas seleccionadas 12345678 permutar 5 das 8 continuando como esta no codigo.
Começa 12345
Termina en 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
Hola Angeliton,

Vi tu código, pero no te entiendo bien. ¿Puedes hablar ingles?

Amanda
·
Hace años 2
·
Le gusta 0
·
Votos 0
·
0 Comentarios
·
Este código de VBA: enumere todas las permutaciones posibles en Excel, necesito una modificación en forma de entrada, que está en 'MsgBox' y necesito que esté en una selección de 1 columna, y la cantidad de fila dentro del seleccionado líneas, y posible hacer la modificación en el código.
responder responder
Sale de 'MsgBox', "¡Demasiadas permutaciones!", vbInformation, "Kutools for Excel"' Que solo está digitalizado y no por selección
Ingrese '1 columna/selección de filas.
ejemplo
filas de una columna seleccionada 12345678 5 de las 8 continuando así en el código.
comienza 12345
termina en 87654. entrada de datos de observación por selección en la columna
·
Hace años 2
·
Le gusta 0
·
Votos 0
·
0 Comentarios
·
Hola Angeliton,

Lamento no poder entenderte completamente... Espero que puedas reorganizar la palabra.

Gracias de antemano.
Amanda
·
Hace años 2
·
Le gusta 0
·
Votos 0
·
0 Comentarios
·
Hola Amanda Lee, este código tiene datos de entrada para intercambiar/posibles combinaciones en MsgBox "¡Demasiadas permutaciones!", vbInformation, "Kutools for Excel"
Necesito datos de entrada para intercambiar/posibles combinaciones en la selección de columnas.
ejemplo
columna 1
1 línea = blanco
2 líneas = negro
3 Línea = azul
4 líneas = amarillo
5 linea = verde
Estas líneas se intercambiarán en todas las combinaciones posibles, el código ya lo hace, por lo que no puedo seleccionar las líneas de permutación, porque la entrada es un MsgBox que se escribe y no se selecciona.
el código completo está aquí: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
·
Hace años 2
·
Le gusta 0
·
Votos 0
·
0 Comentarios
·
Hola Angeliton,

Lo siento por la respuesta tardía.

Pruebe el siguiente código: (Tenga en cuenta que el código no procesa una cadena con más de 8 caracteres. Si desea aumentar el número, puede cambiar el número 8 de "If Len(xStr) >= 8 Then" en el código a números más grandes. Sin embargo, cuanto más grande sea el número, más lento será el programa).

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


Espero que esto funcione para usted.

Amanda
·
Hace años 2
·
Le gusta 0
·
Votos 0
·
0 Comentarios
·
Ver publicación completa