Kapan Harus Menggunakan Advanced Filter di VBA Excel?

Apa Itu Advanced Filter?

Advanced Filter adalah metode penyaringan data yang menggunakan range kriteria (criteria range) sebagai acuan filter. Berbeda dengan AutoFilter yang menentukan kriteria langsung di dalam kode, Advanced Filter membaca syarat penyaringan dari worksheet.

Sebagai contoh:

Kota
Surabaya

Area tersebut dapat dijadikan kriteria untuk menyaring data pelanggan berdasarkan kota.


Mengenal Sintaks Advanced Filter

Sintaks dasar AdvancedFilter adalah:

Range("A1:D100").AdvancedFilter _
    Action:=xlFilterInPlace, _
    CriteriaRange:=Range("F1:F2")

Penjelasan parameter:

ParameterFungsi
Action Menentukan cara filter dijalankan
CriteriaRange Area yang berisi kriteria filter
CopyToRange Lokasi hasil filter (opsional)
Unique Menampilkan data unik

Menyiapkan Area Kriteria

Misalkan data utama berada pada rentang A1:D100.

IDNamaKotaTotal

Di bagian lain worksheet, buat area kriteria.

F
Kota
Surabaya

Kemudian gunakan kode berikut.

Range("A1:D100").AdvancedFilter _
    Action:=xlFilterInPlace, _
    CriteriaRange:=Range("F1:F2")

Hanya data dengan kota Surabaya yang akan ditampilkan.


Menyalin Hasil Filter ke Lokasi Lain

Salah satu kelebihan Advanced Filter adalah mampu menyalin hasil penyaringan ke area lain tanpa mengubah data asli.

Range("A1:D100").AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=Range("F1:F2"), _
    CopyToRange:=Range("H1")

Hasil filter akan muncul mulai dari sel H1.

Teknik ini sering digunakan untuk membuat laporan atau dashboard.


Menampilkan Data Unik

Advanced Filter juga dapat menghasilkan daftar data tanpa duplikasi.

Range("A1:A100").AdvancedFilter _
    Action:=xlFilterCopy, _
    CopyToRange:=Range("D1"), _
    Unique:=True

Jika kolom A berisi nama kota yang berulang, hasil di kolom D hanya akan menampilkan setiap kota satu kali.


Menggunakan Lebih dari Satu Kriteria

Misalkan Anda hanya ingin menampilkan data dengan:

  • Kota = Surabaya

  • Total > 1.000.000

Area kriteria dibuat seperti berikut.

KotaTotal
Surabaya >1000000

Kemudian jalankan AdvancedFilter.

VBA akan membaca seluruh syarat tersebut tanpa perlu menuliskannya satu per satu di dalam kode.


Studi Kasus

Sebuah perusahaan memiliki ribuan data transaksi setiap bulan.

Bagian keuangan ingin membuat laporan yang hanya berisi transaksi dari Bandung dengan nilai lebih dari 5.000.000.

Daripada melakukan filter manual setiap bulan, mereka membuat area kriteria dan menjalankan makro berikut.

Range("A1:E1000").AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=Range("H1:I2"), _
    CopyToRange:=Range("K1")

Laporan baru langsung terbentuk tanpa mengubah data asli.


Advanced Filter vs AutoFilter

AutoFilterAdvanced Filter
Kriteria ditulis di kode Kriteria berasal dari worksheet
Cocok untuk filter sederhana Cocok untuk filter kompleks
Menampilkan hasil pada data asli Dapat menyalin hasil ke lokasi lain
Tidak dapat menghasilkan daftar unik secara langsung Mendukung data unik (Unique:=True)

Jika kebutuhan filter semakin kompleks, Advanced Filter biasanya menjadi pilihan yang lebih fleksibel.


Kesalahan yang Sering Dilakukan

Header pada Criteria Range Tidak Sama

Nama header pada area kriteria harus sama persis dengan header pada tabel data.

Jika berbeda, filter tidak akan menghasilkan data yang diharapkan.


CopyToRange Tidak Menyertakan Header

Saat menggunakan xlFilterCopy, lokasi tujuan sebaiknya dimulai dari sel header agar hasil lebih rapi dan mudah dipahami.


Kriteria Berada di Dalam Area Data

Pisahkan area kriteria dari tabel utama agar tidak mengganggu proses penyaringan.


Tips Praktis

💡 Letakkan area kriteria di bagian worksheet yang mudah ditemukan.

💡 Gunakan xlFilterCopy jika ingin membuat laporan tanpa mengubah data utama.

💡 Manfaatkan Unique:=True untuk membuat daftar unik, misalnya daftar pelanggan atau kota.

💡 Pastikan header pada CriteriaRange sama persis dengan header tabel.

💡 Gabungkan dengan teknik Last Row agar area data dapat menyesuaikan jumlah baris secara otomatis.


Ringkasan

PerintahFungsi
AdvancedFilter Menjalankan penyaringan lanjutan
xlFilterInPlace Menampilkan hasil pada data asli
xlFilterCopy Menyalin hasil filter ke lokasi lain
CriteriaRange Menentukan area kriteria
CopyToRange Menentukan lokasi hasil filter
Unique:=True Menghasilkan data tanpa duplikasi

Kesimpulan

Advanced Filter merupakan solusi yang tepat ketika proses penyaringan data sudah tidak dapat ditangani secara optimal oleh AutoFilter. Kemampuannya dalam menggunakan area kriteria, menyalin hasil ke lokasi lain, serta menghasilkan data unik membuat fitur ini sangat berguna untuk membangun laporan otomatis dan aplikasi VBA Excel yang lebih fleksibel.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.