By Angeliton vào thứ tư, ngày 29 tháng 2021 năm XNUMX
Được đăng trong Excel
Trả lời 5
Lượt thích 0
Lượt xem 7.9K
Bình chọn 0
Este Código VBA: Liste todas as permutações possíveis no Excel, Preiso de uma modificão nele na forma de entrada, que está em 'MsgBox' e eu Preiso que seja em uma seleção de 1 coluna, ea quantidade de linha dentro das linhas selecionadas linhas Sở hữu thể thao fazer a modificação không código.
Sai 'MsgBox "Quá nhiều hoán vị!", VbThông tin, "Kutools cho Excel"' Que é somente digitável e não bởi seleção
Entra 'seleção de 1 coluna / linhas.
gương mẫu
linhas selecionadas 12345678 hoán vị 5 das 8 liên tục và como esta không codigo.
đến 12345
'chấm dứt 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
Xin chào Angeliton,

Tôi đã thấy mã của bạn, nhưng tôi không hiểu lắm về bạn. Bạn có thể nói tiếng Anh không?

Amanda
·
năm 2 trước
·
0 Likes
·
Phiếu bầu 0
·
0 Comments
·
Mã VBA này: Liệt kê tất cả các hoán vị có thể có trong Excel, tôi cần sửa đổi nó ở dạng đầu vào, trong 'MsgBox' và tôi cần nó nằm trong vùng lựa chọn gồm 1 cột và số lượng hàng trong vùng đã chọn và có thể thực hiện sửa đổi trong mã.
trả lời trả lời
Thoát 'MsgBox', "Quá nhiều hoán vị!", VbInformation, "Kutools cho Excel" "Chỉ được số hóa chứ không phải theo lựa chọn
Nhập lựa chọn '1 cột / hàng.
ví dụ
các hàng của cột đã chọn 12345678 5 trong số 8 tiếp tục như vậy trong mã.
bắt đầu 12345
kết thúc bằng 87654. nhập dữ liệu quan sát bằng cách lựa chọn trong cột
·
năm 2 trước
·
0 Likes
·
Phiếu bầu 0
·
0 Comments
·
Xin chào Angeliton,

Rất tiếc vì tôi không thể hiểu hết về bạn ... Mong bạn có thể sắp xếp lại từ ngữ.

Cảm ơn trước.
Amanda
·
năm 2 trước
·
0 Likes
·
Phiếu bầu 0
·
0 Comments
·
Xin chào Amanda Lee, mã này có dữ liệu đầu vào để trao đổi / kết hợp có thể có trong MsgBox "Quá nhiều hoán vị!", VbInformation, "Kutools cho Excel"
Tôi cần dữ liệu đầu vào được hoán đổi / kết hợp có thể trong lựa chọn cột.
ví dụ
cột 1
1 dòng = trắng
2 dòng = đen
3 Dòng = xanh lam
4 dòng = màu vàng
5 dòng = xanh lục
Các dòng này sẽ hoán đổi trong tất cả các kết hợp có thể có, mã đã làm điều đó nên tôi không thể chọn các dòng hoán vị, vì đầu vào là MsgBox được nhập và không được chọn.
mã đầy đủ ở đây: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
·
năm 2 trước
·
0 Likes
·
Phiếu bầu 0
·
0 Comments
·
Xin chào Angeliton,

Xin lỗi vì hồi âm muộn.

Vui lòng thử mã bên dưới: (Lưu ý rằng mã không xử lý một chuỗi có hơn 8 ký tự. Nếu bạn muốn làm cho số lớn hơn, bạn có thể thay đổi số 8 của "If Len (xStr)> = 8 Then" trong mã thành các số lớn hơn. Tuy nhiên, số càng lớn thì chương trình càng chậm.)

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


Hy vọng điều này làm việc cho bạn.

Amanda
·
năm 2 trước
·
0 Likes
·
Phiếu bầu 0
·
0 Comments
·
Xem toàn bộ bài viết