Kuasai Find & FindNext di VBA Excel Tanpa Ribet

Metode Find merupakan salah satu cara tercepat untuk mencari data di VBA Excel. Dengan beberapa baris kode, Anda dapat menemukan sel yang berisi nilai tertentu tanpa harus memeriksa setiap baris menggunakan perulangan.

Namun, bagaimana jika data yang dicari muncul lebih dari satu kali?

Sebagai contoh, nama Andi muncul pada beberapa baris dalam sebuah tabel. Jika hanya menggunakan Find, VBA hanya akan menemukan kemunculan pertama.

Untuk menemukan seluruh data yang cocok, Anda perlu menggabungkan Find dengan FindNext.


Apa Itu Find?

Find adalah metode pada objek Range yang digunakan untuk mencari sel yang memenuhi kriteria tertentu.

Sintaks sederhananya:

Range.Find(What)

Parameter What berisi nilai yang akan dicari.


Contoh Dasar Find

Misalkan Anda ingin mencari nama Andi pada kolom A.

Sub CariData()

    Dim Hasil As Range

    Set Hasil = Range("A:A").Find("Andi")

    If Not Hasil Is Nothing Then

        MsgBox Hasil.Address

    Else

        MsgBox "Data tidak ditemukan."

    End If

End Sub

Jika data ditemukan, VBA akan menampilkan alamat selnya.


Parameter Find yang Sering Digunakan

Beberapa parameter yang umum digunakan antara lain:

ParameterFungsi
What Nilai yang dicari
After Sel awal pencarian
LookIn Mencari pada nilai, rumus, atau komentar
LookAt Pencocokan seluruh isi atau sebagian
SearchOrder Berdasarkan baris atau kolom
SearchDirection Arah pencarian
MatchCase Membedakan huruf besar dan kecil

Contoh:

Set Hasil = Range("A:A").Find( _
    What:="Andi", _
    LookAt:=xlWhole, _
    MatchCase:=False _
)

Apa Itu FindNext?

FindNext digunakan untuk melanjutkan pencarian setelah Find menemukan hasil pertama.

Dengan FindNext, Anda dapat memperoleh seluruh data yang memiliki nilai yang sama.

Sintaksnya:

Range.FindNext(After)

Parameter After biasanya diisi dengan hasil pencarian sebelumnya.


Contoh Find dan FindNext

Misalkan nama Andi muncul beberapa kali.

Sub CariSemua()

    Dim Awal As Range
    Dim Hasil As Range

    Set Awal = Range("A:A").Find("Andi")

    If Not Awal Is Nothing Then

        Set Hasil = Awal

        Do

            Debug.Print Hasil.Address

            Set Hasil = Range("A:A").FindNext(Hasil)

        Loop While Not Hasil Is Nothing And _
                   Hasil.Address <> Awal.Address

    End If

End Sub

Makro akan menampilkan seluruh alamat sel yang berisi Andi.


Mengapa Harus Menyimpan Alamat Pertama?

Perhatikan bagian berikut.

Awal.Address

Nilai ini digunakan sebagai penanda bahwa pencarian telah kembali ke titik awal.

Tanpa pemeriksaan tersebut, FindNext akan terus berputar dan menghasilkan perulangan tanpa akhir.


Studi Kasus

Misalkan Anda ingin memberi warna kuning pada seluruh sel yang berisi kata Lunas.

Sub TandaiLunas()

    Dim Awal As Range
    Dim Sel As Range

    Set Awal = Range("B:B").Find("Lunas")

    If Not Awal Is Nothing Then

        Set Sel = Awal

        Do

            Sel.Interior.Color = vbYellow

            Set Sel = Range("B:B").FindNext(Sel)

        Loop While Not Sel Is Nothing And _
                   Sel.Address <> Awal.Address

    End If

End Sub

Semua data yang memenuhi kriteria akan diberi warna tanpa perlu memeriksa setiap sel satu per satu.


Find vs FindNext

FindFindNext
Menemukan hasil pertama Menemukan hasil berikutnya
Digunakan sekali di awal Digunakan berulang hingga seluruh hasil ditemukan
Dapat digunakan sendiri Umumnya digunakan setelah Find

Find vs For Each

FindFor Each
Sangat cepat untuk pencarian Memeriksa setiap sel
Tidak perlu membaca seluruh range Cocok jika setiap sel memang harus diproses
Efisien untuk data besar Lebih fleksibel untuk logika yang kompleks

Jika tujuan utama hanya mencari data tertentu, Find biasanya lebih cepat dibandingkan For Each.


Kesalahan yang Sering Terjadi

Tidak Memeriksa Nilai Nothing

Jika data tidak ditemukan, Find akan menghasilkan Nothing.

Salah:

MsgBox Hasil.Address

Benar:

If Not Hasil Is Nothing Then

    MsgBox Hasil.Address

End If

Tidak Menyimpan Alamat Pertama

Jika tidak membandingkan dengan alamat pertama, FindNext dapat terus mengulang pencarian tanpa henti.


Mengandalkan Pengaturan Find Sebelumnya

Metode Find mengingat parameter pencarian terakhir yang digunakan, baik melalui VBA maupun dialog Find di Excel.

Oleh karena itu, sebaiknya tentukan parameter penting seperti LookIn, LookAt, dan SearchOrder secara eksplisit agar hasil pencarian selalu konsisten.


Tips Praktis

💡 Gunakan Find untuk menemukan hasil pertama dengan cepat.

💡 Gunakan FindNext jika kemungkinan terdapat lebih dari satu hasil.

💡 Selalu simpan alamat hasil pertama sebagai penanda akhir perulangan.

💡 Periksa apakah hasil pencarian bernilai Nothing sebelum mengakses propertinya.

💡 Tentukan parameter LookAt dan LookIn secara eksplisit agar pencarian tidak dipengaruhi oleh pengaturan sebelumnya.


Ringkasan

MetodeFungsi
Find() Menemukan data pertama yang sesuai
FindNext() Menemukan data berikutnya
Nothing Menandakan data tidak ditemukan
LookAt Menentukan jenis pencocokan
LookIn Menentukan lokasi pencarian

Kesimpulan

Find dan FindNext merupakan pasangan metode yang sangat berguna untuk melakukan pencarian data di VBA Excel. Find digunakan untuk menemukan hasil pertama, sedangkan FindNext memungkinkan Anda melanjutkan pencarian hingga seluruh data yang sesuai berhasil ditemukan. Dengan memahami cara menggunakan keduanya secara bersamaan, Anda dapat membuat proses pencarian menjadi lebih cepat, lebih efisien, dan terhindar dari perulangan yang tidak diperlukan.

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.