Çarşamba, 29 Aralık 2021
  5 Cevaplar
  7.8K Ziyaret
Este Código VBA: Listeleri Excel'e göre değiştirilemez, önceden değiştirilemez, biçimlendirilemez, 'MsgBox' ve ab'nin ilk sıralarında yer alır. olası bir değişiklik bir değişiklik yok.
Sai 'MsgBox "çok fazla permütasyon!", vbInformation, "Kutools for Excel"'
Entra 'seleção de 1 coluna/linhas.
örnek
linhas selecionadas 12345678 permutar 5 das 8 süreklilik como esta kodigo yok.
gel 12345
87654 numaralı terminal.

'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
2 yıl önce
·
#2419
Merhaba Angeliton,

Kodunuzu gördüm ama sizi tam olarak anlamıyorum. İngilizce konuşbiliyor musunuz?

Amanda
2 yıl önce
·
#2420
Bu VBA Kodu: Excel'deki tüm olası izinleri listele, 'MsgBox'ta bulunan giriş biçiminde bir değişikliğe ihtiyacım var ve 1 sütun seçiminde ve içindeki satır miktarında olması gerekiyor. satırlar ve kodda değişiklik yapmak mümkündür.
cevap cevap
Çıkış 'MsgBox', "Çok fazla permütasyon!", vbInformation, "Kutools for Excel"' Seçimle değil, yalnızca sayısallaştırılan
'1 sütun/satır seçimini girin.
örnek
seçilen bir sütunun satırları 12345678 5'den 8'i kodda bu şekilde devam ediyor.
12345 başlar
87654'te sona erer. sütunda seçim yaparak gözlem verileri girişi
2 yıl önce
·
#2421
Merhaba Angeliton,

Sizi tam olarak anlayamadığım için çok üzgünüm... Umarım kelimeyi yeniden düzenleyebilirsiniz.

Şimdiden teşekkürler.
Amanda
2 yıl önce
·
#2422
Merhaba Amanda Lee, bu kod MsgBox "Çok fazla permütasyon!", vbInformation, "Kutools for Excel" içinde değiş tokuş edilecek girdi verileri / olası kombinasyonları içeriyor
Sütun seçiminde değiştirilecek/olası kombinasyonlar için giriş verilerine ihtiyacım var.
örnek
sütun 1
1 satır = beyaz
2 satır = siyah
3 Çizgi = mavi
4 satır = sarı
5 satır = yeşil
Bu satırlar olası tüm kombinasyonlarda değiş tokuş edecek, kod zaten bunu yapıyor, bu yüzden permütasyon satırlarını seçemiyorum, çünkü giriş yazılan ve seçilmeyen bir MsgBox.
tam kod burada: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
2 yıl önce
·
#2423
Merhaba Angeliton,

Geç cevap verdiğim için özür dilerim.

Lütfen aşağıdaki kodu deneyin: (Kod, 8 karakterden fazla bir dizeyi işlemez. Sayıyı büyütmek istiyorsanız, "If Len(xStr) >= 8 Then" bölümündeki 8 sayısını değiştirebilirsiniz. daha büyük sayılara kodlayın. Ancak, sayı ne kadar büyükse, program o kadar yavaş olur.)

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


Umarım bu senin için çalışır.

Amanda
  • Sayfa:
  • 1
Bu gönderi için henüz cevap yok.