Mr. Kid,
Ikut belajar yaa. Jika salah mohon untuk diingatkan.
Kita lihat Jurus Mr Kid dengan formula: {=IFERROR(REPT($E$11;SMALL(IF("
"&$E$11=MID("
"&$B14;ROW($1:$63);LEN($E$11)+1);ROW($1:$63));COLUMNS($C$13:C$13))>0);"")}
Rumus tersebut merupakan rumus array yang akan menghasilkan data array.
ingat untuk membuat formula array menggunakan tombol CSE.
kita mulai dari rumus terdalam MID(" "&$B14;ROW($1:$63);LEN($E$11)+1)
Formula ini memerintah excel untuk membuat data array dari data " "&$B14
yang isinya 01 001 0001 dengan ketentuan dimulai dari 1 sampai 63
(ROW($1:$63) (mohon maaf Mr. Kid ROW($2:$63) saya ubah menjadi
ROW($1:$63), karena apabila menggunakan $2:$63 di komputer saya hasil
tabelnya tidak sesuai harapan), sebanyak 3 karakter dengan perintah
LEN($E$11)+1 karena pada E11 berisi "01" (2 karakter + 1).
01 001 0001 hanya terdiri dari 11 karakter sehingga rumus MID tersebut
hanya menghasilkan 12 data seperti di bawah ini:
01
01
1 0
00
001
01
1 0
00
000
001
01
1
Kemudian menggunakan IF untuk menentukan apakah data tersebut sama
dengan data yang diminta. dengan formula:
IF(" "&$E$11=MID(" "&$B14;ROW($1:$63);LEN($E$11)+1);ROW($1:$63))
Jika data array tersebut sama dengan data yang diminta (" "&$E$11=) maka
tuliskan nomor sesuai barisnya ROW($1:$63).
rumus tersebut menghasilkan data array sebagai berikut:
01 1
01 FALSE
1 0 FALSE
00 FALSE
001 FALSE
01 FALSE
1 0 FALSE
00 FALSE
000 FALSE
001 FALSE
01 FALSE
1 FALSE
Perhatikan bahwa hanya terdapat satu data yang sesuai (nilainya 1).
Kita lanjutkan dengan formula selanjutnya yaitu formula SMALL:
SMALL(IF(" "&$E$11=MID("
"&$B14;ROW($1:$63);LEN($E$11)+1);ROW($1:$63));COLUMNS($C$13:C$13))
Dicari nilai terkecil dari hasil yang diperoleh dengan rumus If tadi.
yaitu yang terkecil ke: 1 (COLUMNS($C$13:C$13))
JIka formula ini dicopy ke kanan maka (COLUMNS($C$13:C$13) akan berubah
menjadi (COLUMNS($C$13:D$13) yang berarti terkecil kedua. dan seterusnya.
Karena hasil fungsi IF hanya mendapatkan 1 angka maka hanya terdapat 1
yang terkecil yaitu 1.
Jadi hasil formula small adalah 1 (Hasil formula small dapat
menghasilkan nilai berapapun sesuai dengan baris yang nilainya sama
dengan kriteria)
Formula selanjutnya adalah REPT.
REPT($E$11;SMALL(IF(" "&$E$11=MID("
"&$B14;ROW($1:$63);LEN($E$11)+1);ROW($1:$63));COLUMNS($C$13:C$13))>0)
Formula REPT ini adalah memerintah excel untuk mengulangi $E$11 yang
berisi 01 sebanyak hasil rumus SMALL.
karena hasil rumus small dapat lebih dari satu maka ditambahkan >0 agar
selalu hasilnya 1, dengan maksud agar hasilnya hanya dituliskan sekali saja.
Jika mau formula REPT dapat diganti dengan formula IF:
IF(SMALL(IF(" "&$E$11=MID("
"&$B14;ROW($1:$63);LEN($E$11)+1);ROW($1:$63));COLUMNS($C$13:C$13))>0;$E$11)
(mohon maaf Mr. Kid saya mengusulkan untuk menggunakan formula IF,
menurut saya lebih mudah dimengerti daripada rept. itu lho yang
menggunakan >0 he he he)
Terakhir sembunyikan apabila terjadi error dengan formula IFERROR
=IFERROR(REPT($E$11;SMALL(IF(" "&$E$11=MID("
"&$B14;ROW($1:$63);LEN($E$11)+1);ROW($1:$63));COLUMNS($C$13:C$13))>0);"")
Untuk kolom jumlah agak susah juga menjelaskan.
=(LEN(B14)+1-LEN(SUBSTITUTE(" "&B14;" "&$E$11;"")))/(LEN($E$11)+1)
Kita mulai dari perintah SUBSTITUTE(" "&B14;" "&$E$11;"")
Pada formula ini komputer diminta untuk mengganti " "&$E$11 yang berisi
01 pada sel B14 dalam hal ini berisi 01 001 0001 dengan spasi kosong.
atau dapat disederhanakan dengan perintah menghapus semua " 01" pada 01
001 0001. hasil dari formula ini adalah 001 0001
Formula selanjutnya LEN(SUBSTITUTE(" "&B14;" "&$E$11;""))
Hallo excel, tolong dihitung berapa panjangnya 001 0001, apakah ada 5 meter?
si excel pun menjawab "eem... hanya ada 9 karakter" Lho.... kok 9?
padahal saya hitung hanya ada 8.
Ternyata Mr. Kid menambahkan " " didepan B14 sehingga 8+1 = 9
Kemudian tolong dihitung berpaha hasil dari panjangnya B14 + 1 dikurangi
hasil rumus substitute.
(LEN(B14)+1-LEN(SUBSTITUTE(" "&B14;" "&$E$11;"")))
11 + 1 - 9 = 3
Maksud dari rumus ini adalah menghitung banyaknya karakter yang sesuai
dengan kriteria pada B14, kemudian dibagi dengan banyaknya kriteria pada E11
Terakhir kali rumus pembagian
=(LEN(B14)+1-LEN(SUBSTITUTE(" "&B14;" "&$E$11;"")))/(LEN($E$11)+1)
Bagaimana jika formula pada jumlah diubah menjadi:
=SUMPRODUCT((LEN(C14:E14)>1)*1)
(maksudnya hitunglah pada c14 sampai e14 jika karakternya lebih dari 1)
(mohon maaf Mr. Kid saya mengusulkan untuk menggunakan formula
Sumproduct, menurut saya lebih mudah dimengerti he he he....)
Mohon maaf jika penjelasannya tidak menjadi lebih jelas.
Mohon kiranya untuk diperbaiki
Wassalam, warahmatullah
NangAgus
On 25/04/2014 9:37, Mr. Kid wrote:
Filenya dulu saja ya... tapi gak pake VBA... (maaf ya... sering
gatelan kalo kena script... jadi nyentuh scriptnya kalo kepepet sajah...)
Moga-moga ada yang bersedia membuatkan dongengnya...
Wassalam,
Kid.
2014-04-25 3:46 GMT+07:00 <[email protected]
<mailto:[email protected]>>:
Kepada penghuni group minta tolong pemecahan pemecahan masalah
ini. karena saya masih belajar dalam hal macro dan vba
Saya mempunyai data di kolom A berupa angka ratusan cell.
bagaimana memecah / split sesuai kriteria (cukup 3 kriteria)
hasilnya. kendala utama memecah angka 0 di depan, seperti kriteria
01 (warna orange), angka 001 dan 0001 angka ikut masuk kreteria
juga (warna kuning). kalau bisa dengan macro atau kode vba krn
otomatis memecah semua data sampai akhir dgn otomatis. dan kalau
bisa juga hasil split otomatis dijumlah sesuai hasil split tiap
cell nya (warna hijau).. sebelumnya terima kasih banyak.....
Gambar terlampir :