By Angeliton 29. december 2021-án, szerdán
Csatlakozik a következő témákhoz: Excel
Válaszok 5
Kedvencek 0
Nézetek 7.9K
Szavazatok 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' eu preciso que seja em uma seleção de 1 coluna, ea linhastrodedasadas quantiedas possivel fazer a modificação no código.
Mondja: "MsgBox "Túl sok permutáció!", vbInformation, "Kutools for Excel"' Que é somente digitável e não por seleção
Entra 'seleção de 1 coluna/linhas.
példa
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
Szia Angeliton!

Láttam a kódodat, de nem egészen értelek. Beszélsz angolul?

Amanda
·
2 éve
·
0 szereti
·
0 szavazat
·
0 Comments
·
Ez a VBA kód: listázza ki az összes lehetséges permutációt az Excelben, módosításra van szükségem bemenet formájában, ami az 'MsgBox'-ban van, és szükségem van arra, hogy 1 oszlopból legyen kiválasztva, és a kiválasztott soron belül sorok, és lehetőség van a kód módosítására.
válasz válasz
Kilép az 'MsgBox', "Túl sok permutáció!", vbInformation, "Kutools for Excel" mezőből, amely csak digitalizálva van, nem pedig kiválasztással
Adja meg az '1 oszlop/sorok kijelölését.
példa
egy kiválasztott oszlop sorai 12345678 A 5-ból 8 így folytatódik a kódban.
12345-től kezdődik
végződik 87654. megfigyelési adatok megadása kijelöléssel az oszlopban
·
2 éve
·
0 szereti
·
0 szavazat
·
0 Comments
·
Szia Angeliton!

Nagyon sajnálom, hogy nem tudtam teljesen megérteni... Remélem sikerül átszervezni a szót.

Előre is köszönöm.
Amanda
·
2 éve
·
0 szereti
·
0 szavazat
·
0 Comments
·
Szia Amanda Lee! Ez a kód cserélendő bemeneti adatokat tartalmaz / lehetséges kombinációk az MsgBoxban: "Túl sok permutáció!", vbInformation, "Kutools for Excel"
Cserélendő bemeneti adatokra van szükségem/lehetséges kombinációkra az oszlopkiválasztásnál.
példa
1. oszlop
1 sor = fehér
2 sor = fekete
3 vonal = kék
4 sor = sárga
5 sor = zöld
Ezek a sorok minden lehetséges kombinációban felcserélődnek, a kód már ezt teszi, így nem tudom kiválasztani a permutációs sorokat, mert a bemenet egy MsgBox, ami be van gépelve és nincs kiválasztva.
a teljes kód itt található: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
·
2 éve
·
0 szereti
·
0 szavazat
·
0 Comments
·
Szia Angeliton!

Elnézést a késői válaszért.

Kérjük, próbálja ki az alábbi kódot: (Ne feledje, hogy a kód nem dolgoz fel 8 karakternél hosszabb karakterláncot. Ha nagyobbra szeretné tenni a számot, módosíthatja az "If Len(xStr) >= 8 Then" 8-as számát a Minél nagyobb a szám, annál lassabb lesz a program.)

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


Remélem ez neked működik.

Amanda
·
2 éve
·
0 szereti
·
0 szavazat
·
0 Comments
·
A teljes hozzászólás megtekintése