Note: The other languages of the website are Google-translated. Back to English
English English

Bagaimana cara menghasilkan atau membuat daftar semua kemungkinan permutasi di Excel?

Misalnya, saya memiliki tiga karakter XYZ, sekarang, saya ingin membuat daftar semua kemungkinan permutasi berdasarkan tiga karakter ini untuk mendapatkan enam hasil yang berbeda seperti ini: XYZ, XZY, YXZ, YZX, ZXY dan ZYX. Di Excel, bagaimana Anda bisa dengan cepat membuat atau membuat daftar semua permutasi berdasarkan jumlah karakter yang berbeda?

Buat atau daftar semua kemungkinan permutasi berdasarkan karakter dengan kode VBA


panah gelembung kanan biru Buat atau daftar semua kemungkinan permutasi berdasarkan karakter dengan kode VBA

Kode VBA berikut dapat membantu Anda membuat daftar semua permutasi berdasarkan jumlah huruf spesifik Anda, lakukan hal berikut:

1. Tahan ALT + F11 kunci untuk membuka Microsoft Visual Basic untuk Aplikasi jendela.

2. Klik Menyisipkan > Modul, dan tempel kode berikut di Modul Jendela.

Kode VBA: Cantumkan semua kemungkinan permutasi di excel

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 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

3. Lalu tekan F5 kunci untuk menjalankan kode ini, dan kotak prompt muncul untuk mengingatkan Anda memasukkan karakter yang Anda ingin daftar semua permutasi, lihat tangkapan layar:

doc daftar permutasi 1

4. Setelah memasukkan karakter, lalu klik OK tombol, semua kemungkinan permutasi ditampilkan di kolom A lembar kerja aktif. Lihat tangkapan layar:

doc daftar permutasi 2

Note: Jika panjang karakter yang dimasukkan sama atau lebih dari 8 karakter, kode ini tidak akan berfungsi karena ada terlalu banyak permutasi.

doc daftar permutasi 3


Buat daftar atau buat semua kemungkinan kombinasi dari beberapa kolom

Jika Anda perlu membuat semua kemungkinan kombinasi berdasarkan data beberapa kolom, mungkin, tidak ada cara yang baik untuk menangani tugas tersebut. Tapi, Kutools untuk Excel's Cantumkan Semua Kombinasi utilitas dapat membantu Anda membuat daftar semua kemungkinan kombinasi dengan cepat dan mudah. Klik untuk mengunduh Kutools for Excel!

doc daftar semua kombinasi

Kutools untuk Excel: dengan lebih dari 300 add-in Excel yang praktis, gratis untuk dicoba tanpa batasan dalam 30 hari. Unduh dan uji coba gratis Sekarang!


Alat Produktivitas Kantor Terbaik

Kutools for Excel Memecahkan Sebagian Besar Masalah Anda, dan Meningkatkan Produktivitas Anda hingga 80%

  • Reuse: Masukkan dengan cepat rumus, bagan yang kompleks dan apa pun yang pernah Anda gunakan sebelumnya; Enkripsi Sel dengan kata sandi; Buat Milis dan mengirim email ...
  • Bilah Formula Super (dengan mudah mengedit beberapa baris teks dan rumus); Membaca Tata Letak (membaca dan mengedit sel dalam jumlah besar dengan mudah); Tempel ke Rentang yang Difilter...
  • Gabungkan Sel / Baris / Kolom tanpa kehilangan Data; Pisahkan Konten Sel; Gabungkan Baris / Kolom Duplikat... Mencegah Sel Duplikat; Bandingkan Rentang...
  • Pilih Duplikat atau Unik Baris; Pilih Baris Kosong (semua sel kosong); Temukan Super dan Temukan Fuzzy di Banyak Buku Kerja; Pilih Acak ...
  • Salinan Tepat Beberapa Sel tanpa mengubah referensi rumus; Buat Referensi Otomatis ke Beberapa Lembar; Sisipkan Poin, Kotak Centang, dan lainnya ...
  • Ekstrak Teks, Tambahkan Teks, Hapus berdasarkan Posisi, Hapus Space; Membuat dan Mencetak Subtotal Paging; Konversi Konten Antar Sel dan Komentar...
  • Filter Super (simpan dan terapkan skema filter ke sheet lain); Penyortiran Lanjutan menurut bulan / minggu / hari, frekuensi dan lainnya; Filter Khusus dengan huruf tebal, miring ...
  • Gabungkan Workbooks dan WorkSheets; Gabungkan Tabel berdasarkan kolom kunci; Pisahkan Data menjadi Beberapa Lembar; Konversi Batch xls, xlsx dan PDF...
  • Lebih dari 300 fitur canggih. Mendukung Office / Excel 2007-2019 dan 365. Mendukung semua bahasa. Penerapan yang mudah di perusahaan atau organisasi Anda. Fitur lengkap uji coba gratis 30 hari. Jaminan uang kembali 60 hari.
tab kte 201905

Tab Office Membawa antarmuka Tab ke Office, dan Membuat Pekerjaan Anda Jauh Lebih Mudah

  • Aktifkan pengeditan dan pembacaan tab di Word, Excel, PowerPoint, Publisher, Access, Visio, dan Project.
  • Buka dan buat banyak dokumen di tab baru di jendela yang sama, bukan di jendela baru.
  • Tingkatkan produktivitas Anda hingga 50%, dan kurangi ratusan klik mouse untuk Anda setiap hari!
officetab bawah
Urutkan komentar berdasarkan
komentar (13)
Belum ada peringkat. Jadilah yang pertama memberi peringkat!
Komentar ini diminimalkan oleh moderator di situs
Halo, saya sedang mengerjakan proyek kecil menggunakan aturan permutasi dan kombinasi. Saya membutuhkan dukungan Anda dalam hal ini. Skenario: Saya memiliki 13 digit data alfa numerik (00SHGO8BJIDG0) Saya ingin pengkodean untuk menukar S ke 5, I ke 1 dan O ke 0 dan sebaliknya. Proyeknya adalah jika saya memiliki 13 digit data yang benar, saya akan menerima kode sandi 3 digit. (misalnya) 00SHG08BJ1DG0 - 500 adalah kode sandi tetapi karena salah ketik yang bukan 1 itu saya dan 0 itu O ada info yang salah. Bisakah kamu menolongku.
Komentar ini diminimalkan oleh moderator di situs
Halo,

Saya mencoba untuk mendapatkan permutasi untuk 82 karakter, kode yang disediakan berfungsi, tetapi, karena kolomnya hanya 1048576, saya ingin memindahkan output berikutnya dalam B,C,D..... Adakah di antara Anda yang bisa membantu saya dalam hal ini pandangan
Komentar ini diminimalkan oleh moderator di situs
@Supraja...

di sub pertama hapus semua sel ... bukan hanya baris pertama
--Sel. Hapus

Sub GetPermutation(Str1 Sebagai String, Str2 Sebagai String, ByRef xRow Selama)
Redupkan i Sebagai Integer, xLen Sebagai Integer
xLen = Len(Str2)
Jika xLen < 2 Maka
'pindah ke kolom berikutnya ketika Anda mencapai 100
Sel(((xRow - 1) Mod 100) + 1, 1 + Int(xRow / 100)) = Str1 & Str2
xBaris = xBaris + 1
Lain
Untuk i = 1 Ke xLen
Panggil GetPermutation(Str1 + Mid(Str2, i, 1), Kiri(Str2, i - 1) + Kanan(Str2, xLen - i), xRow)
Next
End If
End Sub
Komentar ini diminimalkan oleh moderator di situs
Berapa banyak urutan 3 hal yang dapat dibentuk dari 7 hal yang berbeda penggantian dan urutan itu penting?
Komentar ini diminimalkan oleh moderator di situs
3 pangkat 7: 2187
Komentar ini diminimalkan oleh moderator di situs
Halo semuanya. Saya butuh bantuan dalam hal ini. Saya memiliki dua huruf yang akan diubah dalam 20 baris. Tapi saya tidak melakukannya dengan benar. Siapapun yang bisa membantu saya harus mengirimkan permutasi ke email saya. pauladah69@gmail.com.


1.abba
2.aabb
3.aabb
4.aabb
5.aabb
6.aabb
7.aabb
8.aabb
9.aabb
10.aabb
11.aabb
12.aabb
13.aabb
14.aabb
15.aabb
16.aabb
17.aabb
18.aabb
19.aabb
20.aabb
Komentar ini diminimalkan oleh moderator di situs
kode ini tidak akan berfungsi karena ada dua banyak permutasi


seharusnya:

kode ini tidak akan berfungsi karena terlalu banyak permutasi


HTH
Komentar ini diminimalkan oleh moderator di situs
Halo, MC,
Terima kasih atas pengingat hangat Anda, itu adalah kesalahan saya. Saya telah memperbaikinya.
Terima kasih banyak!
Komentar ini diminimalkan oleh moderator di situs
peki bunu listeleyecek bir program uygulama yok mu?basit sıradan bir hesaplamadan daha fazlasına ihtiyacı olan ne yapacak?
Komentar ini diminimalkan oleh moderator di situs
siapa yang dapat mengirimi saya daftar 10 item berbeda yang diubah oleh 2 hasil. kode ini

tidak mengerjakan ini
Komentar ini diminimalkan oleh moderator di situs
Halo, jika string input berisi karakter duplikat, maka sub menghasilkan permutasi duplikat.
Ini tidak terjadi jika Anda membuat modifikasi berikut sebagai loop:

' ============================
Untuk i = 1 Ke xLen
Jika Instr( Kiri(Str2, i - 1), Tengah(Str2, i, 1) ) = 0 maka
Panggil GetPermutation(Str1 + Mid(Str2, i, 1), Kiri(Str2, i - 1) + Kanan(Str2, xLen - i), xRow)
Akhir jika
Next
' ============================

Membuat variabel lokal sementara untuk Mid(Str2, i, 1) dan untuk Left(Str2, i - 1), dan menghindari pengujian untuk i=1 membuatnya berjalan lebih cepat:


' ============================
Sub GetPermutation(Str1 Sebagai String, Str2 Sebagai String, ByRef xRow Selama)
Redupkan i Sebagai Integer, xLen Sebagai Integer, Str2kiri sebagai String, c sebagai String
xLen = Len(Str2)
Jika xLen < 2 Maka
Range("A" & xRow) = Str1 & Str2
xBaris = xBaris + 1
Lain
Panggil GetPermutation(Str1 + Mid(Str2, 1, 1), Kanan(Str2, xLen - 1), xRow)
Untuk i = 2 Ke xLen
c = Tengah(Str2, i, 1)
Str2kiri = Kiri(Str2, i - 1)
Jika Instr( Str2kiri, c ) = 0 maka
Panggil GetPermutation(Str1 + c, Str2left + Right(Str2, xLen - i), xRow)
End If
Next
End If
End Sub
' ============================

Tepuk tangan,
DVdm
Komentar ini diminimalkan oleh moderator di situs
Hai !

Como faço para gerar pelo menos 10 permutaes ?
Komentar ini diminimalkan oleh moderator di situs
Halo, Mateus,
Untuk mengatasi masalah Anda, silakan terapkan kode di bawah ini:(Catatan: jika ada lebih dari 8 karakter, kode akan dieksekusi dengan lambat.)
Sub GetString()
'Updateby Extendoffice
    Dim xStr As String
    Dim FRow As Long
    Dim FC As Integer
    Dim xScreen As Boolean
    Dim xNumber As Long
    xNumber = 10 ' This is the max length of the characters you can change it to 11, 12, 13...as you need
    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) > xNumber Then
        MsgBox "Too many permutations!", vbInformation, "Kutools for Excel"
        Exit Sub
    Else
        ActiveSheet.Columns(1).Clear
        FRow = 1
        FC = 1
        Call GetPermutation("", xStr, FRow, FC)
    End If
    Application.ScreenUpdating = xScreen
End Sub
Sub GetPermutation(Str1 As String, Str2 As String, ByRef xRow As Long, ByRef xc As Integer)
    Dim i As Integer, xLen As Integer
    xLen = Len(Str2)
    If xLen < 2 Then
        If xRow > 1000000 Then
            xc = xc + 1
            xRow = 1
        End If
       ActiveSheet.Cells(xRow, xc) = 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, xc)
        Next
    End If
End Sub


Silahkan dicoba, semoga bisa membantu!
Belum ada komentar yang diposting di sini
Tinggalkan komentar anda
Posting sebagai Tamu
×
Beri peringkat pos ini:
0   Karakter
Lokasi yang Disarankan