Saya ingin menghasilkan serangkaian permutasi dari sebuah baris di Excel.
Baris genesis dapat berupa, misalnya,
cat | dog | rat | mouse | rhino | ape | fish
Saya ingin membuat jumlah baris lain yang sewenang-wenang dengan konten yang sama tetapi dikocok, misalnya
dog | mouse | rhino | ape | cat | fish | rat
rhino | rat | cat | mouse | fish | ape | dog
...
Apakah ini mungkin?
Jawaban:
Tempatkan nilai dalam A1 hingga G1
Di A2 hingga G2 masukkan:
Di A3 hingga G3 masukkan:
Setiap kali lembar kerja dihitung ulang, permutasi baru akan dihasilkan.
sumber
Saya menggunakan metode yang mirip dengan apa yang diposting oleh Gary's Student, tetapi saya menggunakan
RANK
formula saya sebagai gantinya. Saya pikir ini menyederhanakan formula dan membuatnya sedikit lebih mudah dimengerti.Untuk sampel data dalam
A1:G1
:Isi formula
=RAND()
di seberangA2:G2
.Kemudian isi formula di bawah ini
A3:G3
.Ini bagus untuk satu kali atau sejumlah kecil baris.
Untuk solusi yang lebih kuat, saya akan menggunakan VBA. Makro di bawah ini akan memungkinkan Anda untuk memilih nilai yang ingin Anda kocok dan tentukan jumlah permutasi yang ingin Anda buat. Permutasi akan dicetak ke lembar baru, tempat Anda dapat menyalin dan menempelkannya di mana pun Anda suka.
Fungsi ShuffleArray bukan pekerjaan saya.
Sumber: www.cpearson.com/excel/ShuffleArray.aspx Hak Cipta 2018, Charles H. Pearson
sumber
Ini benar-benar mungkin, tetapi teknik untuk pengaturan ini jauh dari jelas.
Untuk setiap baris baru, untuk menghasilkan angka yang menunjuk ke posisi di baris asli, saya akan memberi peringkat serangkaian angka acak berdasarkan ukuran dari terbesar ke terkecil, menggunakan fungsi RANK () dan RAND ().
Excel tidak mencegah RAND () menghasilkan nomor acak yang sama lebih dari sekali. Untuk menghindari masalah ini, saya akan menggunakan angka acak yang dimodifikasi yang dipaksa berbeda dari yang lainnya dalam daftar. Ekspresi saya mengitari setiap angka acak dan kemudian menambahkan angka kecil yang unik (yang lebih kecil dari kenaikan pembulatan) untuk melakukan ini.
(Modifikasi saya menyebabkan beberapa permutasi secara sepele lebih mungkin daripada yang lain, dan saya berasumsi bahwa Anda tidak perlu keacakan dokumen menjadi kaliber paling tinggi, atau Anda tidak akan menggunakan Excel sebagai pembangkit angka acak Anda. )
Setelah membuat peringkat, saya akan menyalin dan menempelkannya ke sel baru sebagai nilai. Kemudian saya akan mengikat setiap baris baru yang disusun ulang ke sel dengan peringkat yang ditempelkan, dan ke baris asli, menggunakan fungsi OFFSET () dalam formula saya.
Sebagai alternatif, Anda bisa mengikat baris yang disusun ulang ke peringkat tanpa menyalin dan menempelkannya sebagai nilai. Melakukan hal itu akan menyebabkan baris Anda dikocok setiap kali Excel menghitung ulang dokumen, karena angka-angka yang dihasilkan dari fungsi RAND () tidak lengket di Excel.
Gambar mungkin penting untuk memahami apa yang telah saya jelaskan. Klik di bawah untuk melihat gambar besar:
Formula Lihat:
Tampilan Biasa:
sumber