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

Reply via email to