Dalam prosedur : Private Sub NamaUnik_Click() Range(Cells(16, 3), Cells(16, 3).End(xlDown)).Select Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(2, 4), Unique:=True End Sub
Bagian Cells(2, 4) merujuk ke sejumlah baris yang kurang dari jumlah baris Range(Cells(16, 3), Cells(16, 3).End(xlDown)) Dengan begitu, maka proses akan melakukan clearcontents pada kolom Cells(2, 4) mulai range pojok kiri atasnya sampai kolom terkanan dari Cells(2, 4)pada baris last cell Pada kasus ini, Cells(2, 4) hanya merujuk pada sebuah cell yaitu D2 (1 baris). Andai worksheet tersebut memiliki last cell di AX123, maka akan ada proses clear contents pada area range D2:D123 Coba ubah jadi : Private Sub NamaUnik_Click() Range(Cells(16, 3), Cells(16, 3).End(xlDown)).Select Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(2, 4)*. resize(9)*, Unique:=True End Sub Bagian .resize(9) akan membuat area range sebanyak 9 baris x 1 kolom, dengan asumsi bahwa 9 baris ini akan mencukupi jumlah baris hasil advanced filter (termasuk header). Karena tidak tahu hasil akhirnya kaan terdiri dari berapa baris, maka biasanya di resize sebanyak jumlah baris sumber data yang di advanced filter. Dalam hal ini berarti sebanyak jumlah baris area Range(Cells(16, 3), Cells(16, 3).End(xlDown)) Jika akan disusun lengkap, akan seperti ini : Private Sub NamaUnik_Click() Range(Cells(16, 3), Cells(16, 3).End(xlDown)).Select Selection.AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Cells(2, 4)*.resize(**Range(Cells(16, 3), Cells(16, 3).End(xlDown)).rows.count)*, _ Unique:=True End Sub fyi, Methods Select dan Activate adalah method yang sebaiknya dihindari karena membutuhkan waktu proses yang cukup lama. Waktu proses untuk select bisa dimanfaatkan untuk proses lainnya yang lebih pokok. kalau ndak salah duga, script : (misal dinamai Script A) Private Sub NamaUnik_Click() Range(Cells(16, 3), Cells(16, 3).End(xlDown)).Select Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(2, 4), Unique:=True End Sub akan diproses jauh lebih lama dibanding script : (misal dinamai script B) Private Sub NamaUnik_Click() dim rng as range set rng=Range(Cells(16, 3), Cells(16, 3).End(xlDown)) rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(2, 4), Unique:=True End Sub meskipun jumlah baris script A lebih sedikit dibanding script B. Andai saja script A dikalkulasi 2 x waktu proses script B, maka jika memakai script A untuk 1 proses bisa menyelesaikan 2 proses yang sama dengan script B. Kembali ke pokok masalah. Jika akan menggunakan area data sumber yang di advanced sebagai area bagian copytorange, maka script B bisa berbunyi : Private Sub NamaUnik_Click() dim rng as range set rng=Range(Cells(16, 3), Cells(16, 3).End(xlDown)) rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(2, 4) .resize(rng.rows.count), Unique:=True End Sub mohon dikoreksi kalo salah. Wassalam, Kid. 2013/3/15 hendrik karnadi <hendrikkarn...@yahoo.com> > ** > > > Bagian yang diberi huruf tebal ini yang menyebabkan "bentrok" karena kolom > 4 akan diisi dengan sel kosong hasil filter. > > Private Sub NamaUnik_Click() > Range(Cells(16, 3), Cells(16, 3).End(xlDown)).Select > Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(2, 4), > Unique:=True > End Sub > > Coba ganti warna merah dengan selain 3 atau 4 > > Salam, > HK > > > ------------------------------ > *From:* "tio.ad...@ptssb.co.id" <tio.ad...@ptssb.co.id> > *To:* belajar-excel@yahoogroups.com > *Sent:* Friday, 15 March 2013, 16:35 > *Subject:* [belajar-excel] Beri Nama Unik tapi cell di bawahnya hilang > > > > Dear Be-Exceller, > > Saya belajar membuat mencari nama unik dan di tempatkan ke cell tertentu. > Nama unik itu saya ambil dari kolom nama. Tapi setelah saya coba membuat > nama unik ke cell tertentu, kok isi cell > > persis di bawah cell tujuan menghilang, kenapa yah ? > > > Ini file terlampir : > > > > Terima kasih jawabannya. > Wassalam, > Tio > > > >