Quarta-feira, 29 2021 dezembro
  5 Respostas
  7.9 mil visitas
0
Votos
desfazer
Este VBA: Liste todas as permutações possíveis no Excel, precisa de uma modificaçã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 byy no código.
Sai 'MsgBox "Too many permutations!", vbInformation, "Kutools for Excel"' Que é somente digitável e não por seleção
Entra 'seleção de 1 coluna/linhas.
exemplo
linhas selecionadas 12345678 permutar 5 das 8 continuando como este 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
anos 2 atrás
·
#2419
0
Votos
desfazer
Olá Angelito,

Eu vi seu código, mas não entendi muito bem. Você pode falar em Inglês?

Amanda
anos 2 atrás
·
#2420
0
Votos
desfazer
Este código VBA: Liste todas as permutações possíveis no Excel, preciso de uma modificação nele na forma de entrada, que está em 'MsgBox' e preciso que esteja em uma seleção de 1 coluna, e a quantidade de linha dentro do selecionado linhas, e possível fazer a modificação no código.
responder responder
Sai de 'MsgBox', "Too many permutations!", vbInformation, "Kutools for Excel"' Que é apenas digitalizado e não por seleção
Insira '1 seleção de coluna/linhas.
exemplo
linhas de uma coluna selecionada 12345678 5 das 8 continuando assim no código.
começa 12345
termina em 87654. entrada de dados de observação por seleção na coluna
anos 2 atrás
·
#2421
0
Votos
desfazer
Olá Angelito,

Sinto muito não poder entendê-lo completamente... Espero que você possa reorganizar a palavra.

Obrigado antecipadamente.
Amanda
anos 2 atrás
·
#2422
0
Votos
desfazer
Olá Amanda Lee, este código contém dados de entrada para serem trocados/possíveis combinações em MsgBox "Too many permutations!", vbInformation, "Kutools for Excel"
Eu preciso que os dados de entrada sejam trocados/possíveis combinações na seleção de colunas.
exemplo
coluna 1
1 linha = branco
2 linhas = preto
3 Linha = azul
4 linhas = amarelo
5 linhas = verde
Essas linhas vão trocar em todas as combinações possíveis, o código já faz isso então não consigo selecionar as linhas de permutação, pois a entrada é uma MsgBox que é digitada e não selecionada.
código completo está aqui: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
anos 2 atrás
·
#2423
0
Votos
desfazer
Olá Angelito,

Desculpe pelo atraso na resposta.

Por favor, tente o código abaixo: (Observe que o código não processa uma string com mais de 8 caracteres. Se você quiser aumentar o número, você pode alterar o número 8 de "If Len(xStr) >= 8 Then" no código para números maiores. No entanto, quanto maior o número, mais lento o programa seria.)

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 funcione para voce.

Amanda
  • Página :
  • 1
Ainda não há respostas para esta postagem.