walaupun challenge (celeng palsu) ini tidak laku..
terlampir jawabannya (versi siti sendiri) : workbook 'Penampakan Hasil Kombinasi (V3).xls'
berisi makro yg memungkinkan kita mengubah ubah nilai argument kedua (jumlah Grup)
di situh... pengulangannya diimplemetasikan melalui cara rekursif, yaitu
prosedur yg didalamnya mengandung perintah memanggil DIRInya sendiri
Private Sub CombiRec(ByVal p As Integer, ByVal q As Integer, _
ByVal r As Integer, ByVal s As Variant)
' siti Vi / blueewater 27 Nov 2010
' meng-generated Daftar Kombinasi /ditulis di kolom TopDat
' secara rekursif
If q > p - r + 1 Then Exit Sub
If q <= 0 Then
If Len(s) > 1 Then s = Left(s, Len(s) - 1)
TopDat = s
nKombi = nKombi + 1
Set TopDat = TopDat(2, 1)
Exit Sub
End If
CombiRec p, q - 1, r + 1, s & r & "-" '<--kupangggil diriku sendiri
CombiRec p, q, r + 1, s
End Sub
mudah-mudahan tidak terlalu banyak mudharat-nya
misal ada sejumlah suster ngesot, katakan 13 orang,
dari 13 manusia itu akan dipilih 4 orang yg akan dikirim (sbg TKI sambil sekolah lagi)
ke negri belanda.
berapa banyak kemungkinan susunan NAMA 4 suster-ngesot itu ?
(katanya, disebut kombinasi)
maka dengan gampang dapat ditebak dengan fungsi COMBIN
=COMBIN(13,4)
hasilnya kalo ndak salah =715
tetapi bagaimana & seperti apa "rumusnya" untuk menampilkan Penampakan Daftar
Susunan Nama sebanyak 715 set itu ??
dengan secuil makro; cara kasar; seperti ini kita dapat menampilkannya
For A = 1 To n - 3
For B = 2 To n - 2
For C = 3 To n - 1
For D = 4 To n - 0
If A < B And B < C And C < D Then
ActiveCell = A & "-" & B & "-" & C & "-" & D
ActiveCell(2, 1).Select
nKombi = nKombi + 1
End If
Next D
Next C
Next B
Next A
dapat kita lihat ada Nested Loop bertingkat 4.
Tetapi jika kemudian ternyata argument ke2 berubah
For A = 1 To n - 2
misalnya dari 13 orang akan dipilih (bukan lagi 4 orang) tetapi 3 orang
maka makro harus diboangkar pasang, loopnya diubah menjadi nested loop
bertingkat 3, mungkin seperti ini
For B = 2 To n - 1
For C = 3 To n
If A < B And B < C Then
ActiveCell = A & "-" & B & "-" & C
ActiveCell(2, 1).Select
nKombi = nKombi + 1
End If
Next C
Next B
Next A
padahal kita mauknya ingin argument kedua itu dapat diubah-ubah sesuka hati
dan ogah lah yauw.. kalau setiap kali harus mengubah programnya...
Jadi... Problemnya adalah :
(kalau boleh, ini disebut sbg Celeng Palsu edisi akhir tahun 2010)
Bagaimana membuat prosedur (dlm VBA Code) yg memungkinkan kita mengubah
ubah nilai argument kedua (jumlah Grup) tanpa harus mengubah-ubah VBA codenya.
Jika anda tidak suka makro, boleh juga membuat FORMULA untuk keperluan tsb.
Maaf bang Momod.. lampiran sudah di-zip ternyata masih > 200KB
Bluwwater,
27 nov 2010
siti
| momods mencari penerbit buku yang oke dan muantab.... adakah? |
| ayo silahkan coba lowongan yang momod kirim... |
| http://www.facebook.com/group.php?gid=37671048001&ref=mf |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message, melecehkan, tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan winzip jika perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/ |
+-------------------------------------------------------------------+
| Berikan testimoni di : http://www.friendster.com/xlmania atau... |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html |
+-------------------------------------------------------------------+
| Message lama ada di : |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id] |
| http://www.mail-archive.com/xl-mania@yahoogroups.com |
+-------------------------------------------------------------------+
Nenhum comentário:
Postar um comentário