Wednesday, October 16, 2013

Advance Filter dengan VBA untuk Lookup Records

Oleh: Zanul Ulum

Tulisan ini berisi sharing penggunaan advance filter yang sering saya gunakan untuk mencari record dari sebuah tabel database yang disimpan dalam format workbook atau microsoft excel. Agar tabel bisa diolah dengan baik oleh advance filter, silahkan dibaca ulasan dari Mr. Kid tentang bagaimana cara menyusun data sebagai tabel yang baik.

Selain untuk memudahkan dalam penggunaan, VBA atau macro untuk AdvancedFilter dimaksudkan agar hasil filter bisa ditampilkan dalam workbook dan sheet di luar tabel database. Jika tidak menggunakan VBA, secara default hasil advance filter harus ditampilkan dalam sheet yang sama dengan sheet tabel database atau dalam sheet yang aktif. Pesan di bawah akan muncul apabila kita mencoba untuk menampilkan hasil filter di sheet yang lain.



Pesan di atas tidak muncul apabila proses Advance Filter dilaksanakan melalui VBA atau macro dengan menggunakan method AdvancedFilter. Untuk mengetahui cara penggunaan dari method tersebut, tekan tombol F2 atau Object Browser saat di Microsoft Visual Basic Editor (VBE). Masukkan keyword atau kata kunci AdvancedFilter, kemudian click icon teropong.


Click atau pilih AdvancedFilter, kemudian tekan F1 untuk melihat keterangan detail dari method yang dipilih.


Dari keterangan object browser di atas bisa dijelaskan sebagai berikut:

Fungsi AdvancedFilter bekerja di object Excel.Range atau object Range dengan menggunakan parameter berupa Action, [CriteriaRange], [CopyToRange],[Unique].
Parameter Action harus ada sedangkan  [CriteriaRange], [CopyToRange],[Unique] bersifat optional atau pilihan. Ada dua pilihan untuk action yaitu xlFilterCopy dan xlFilterInPlacexlFilterCopy dipilih untuk proses advance filter ini karena hasil filter akan ditampilkan di tempat lain bukan ditempat table yang sama (xlFilterInPlace).

Dalam contoh ini saya menggunakan dua buah file workbook yaitu workbook yang berisi tabel database dan workbook yang berisi macro atau vba. File database saya beri nama isbn.xlsx berisi tabel nomer isbn dan penerbitnya, sedangkan file isbn.xlsm berisi macro atau vba untuk menampilkan hasil lookup record. Kedua file tersebut harus diletakkan dalam folder yang sama.

Tabel database di file isbn.xlsx disimpan dalam sheet [Publisher] tersusun dari 4 (empat) header/field yaitu,
- [Publisher code]
- [Publisher]
- [Notes]
- [strKey]

Field [strKey] adalah header dummy hasil gabungan dari 3 (tiga) header sebelumnya. Header dummy ini dibuat secara otomatis dengan macro/vba saat file pertama kali dibuka atau melalui event Workbook_Open().

Maksud dari penggabungan ini adalah untuk membuat header bantuan sehingga jika kita memasukkan sembarang keyword atau kata kunci dalam satu cell, bisa didapatkan record antar header.

Dalam file isbn.xlsm terdapat sheet [LookUpPublisher] dengan tampilan sebagai berikut:

Range [B1] adalah tempat untuk memasukkan keyword atau kata kunci. Jika ingin mencari [publisher code] dengan kode yang diawali dengan 870, maka di [B1] dimasukkan kata kunci 870*. Record hasil pencarian akan ditampilkan mulai baris ke 3.


jika ingin mencari [publisher]=Autodesk, di [B1] dimasukkan kata kunci Autodesk. Apabila ingin dicari [Notes] yang berisi UK, di [B1] dimasukkan kata kunci UK.

Jadi dengan memasukkan satu kata kunci di [B1], program akan mencari kata kunci tersebut di header [Publisher Code], [Publisher] dan [Notes].

Untuk mengetahui alur program dan code vba-nya  download file berikut.


No comments:

Post a Comment