Lewati ke konten utama

Fungsi VBA InStr: Cara Mencari Teks di Excel VBA

Pelajari cara menggunakan fungsi VBA InStr untuk menemukan teks di dalam string, termasuk sintaks, contoh, sensitivitas huruf besar/kecil, dan kesalahan umum.
Diperbarui 21 Sep 2026  · 9 mnt baca

Jelajahi dengan AI

ChatGPTClaudePerplexity

Jika Anda pernah menulis lebih dari beberapa makro VBA, kemungkinan besar Anda pernah berada di situasi harus memeriksa apakah suatu teks ada di dalam sel. Di VBA, InStr adalah salah satu fungsi yang akhirnya Anda gunakan di mana-mana. Fungsi ini memberi tahu posisi kemunculan suatu potongan teks di dalam teks lain. Anda bisa menggunakannya untuk mengecek apakah teks ada di sel, mengurai nilai dalam teks, atau mengendalikan logika kondisional dalam makro yang bergantung pada pola teks.

Dalam panduan ini, saya akan mengulas sintaks InStr, beberapa contoh, cara kerja mode perbandingan (bagian ini lebih sering menjebak orang daripada yang seharusnya), serta beberapa pola yang benar-benar akan Anda gunakan berulang.

Saya menyarankan Anda memulai dengan Excel Fundamentals skill track kami untuk membangun fondasi yang kuat sebelum lanjut ke VBA, atau ikuti Advanced Excel Functions jika Anda sudah punya pengalaman, untuk mempelajari lebih jauh bagaimana fungsi meningkatkan efisiensi analisis data.

Apa Itu Fungsi VBA InStr?

InStr adalah fungsi VBA yang mengembalikan posisi kemunculan pertama suatu string di dalam string lain.

Hasilnya berperilaku sebagai berikut:

  • Jika ditemukan, mengembalikan angka (posisi tempat kecocokan dimulai)
  • Jika tidak menemukan apa pun, mengembalikan 0

Misalnya, jika "cat" muncul pada posisi 5 dalam string, Anda akan mendapatkan 5. Jika tidak ada, Anda mendapatkan 0.

Sintaks VBA InStr

Berikut sintaks lengkap InStr:

InStr([start], string1, string2, [compare])

Di mana:

  • start (opsional): Menentukan dari posisi mana VBA memulai pencarian. Jika diabaikan, VBA mulai dari posisi 1.

  • string1 (wajib): Teks lengkap tempat Anda melakukan pencarian.

  • string2 (wajib): Teks yang ingin Anda temukan.

  • compare (opsional): Menentukan bagaimana perbandingan dilakukan (peka huruf besar/kecil atau tidak). Jika diabaikan, VBA menggunakan mode perbandingan bawaan, biasanya peka huruf besar/kecil.

Perhatikan bahwa Anda bisa mengabaikan argumen start dan compare (InStr(string1, string2)) untuk versi yang lebih sederhana. Namun jika Anda memutuskan menggunakan argumen compare, Anda juga harus menyertakan argumen start.

Cara Kerja VBA InStr

Bayangkan InStr seperti membaca kalimat dari kiri ke kanan, satu karakter demi satu.

Fungsi ini mulai dengan string1, memindainya, dan mencari tempat pertama di mana string2 cocok. Begitu menemukan kecocokan, fungsi berhenti dan mengembalikan posisi tempat kecocokan dimulai.

Posisi “kecocokan” penting karena VBA menghitung dari 1, bukan 0. Jadi karakter pertama dalam string berada di posisi 1, yang kedua di 2, dan seterusnya. 

Penjelasan Nilai Kembalian VBA InStr

Menafsirkan hasil fungsi InStr cukup mudah. Anda bisa mendapatkan salah satu dari berikut ini:

  • Angka positif: Jika menemukan kecocokan, angkanya menunjukkan posisi awalnya.

  • 0: Jika tidak ada kecocokan di mana pun dalam string

Namun, jika string masukan Anda Null, fungsi akan mengembalikan Null. Walau bisa diabaikan untuk makro dasar, patut dicatat bahwa perbedaan ini bisa diam-diam merusak suatu kondisi.

Contoh Dasar VBA InStr

Sekarang saya tunjukkan beberapa contoh cara menggunakan fungsi VBA InStr

Menemukan kata dalam kalimat

Untuk memeriksa apakah kata “before” ada di dalam catatan “Deliver before noon”.

Sub Before()

    Dim result As Integer
    result = InStr("Deliver before noon", "before")
    
    MsgBox result

End Sub

Hasil untuk VBA di atas adalah 9 karena “before” dimulai pada karakter ke-9.

Memeriksa apakah sebuah karakter ada

Untuk memeriksa apakah karakter “0” ada di string tertentu, gunakan VBA berikut:

Sub ChExist()

    Dim result As Integer
    result = InStr(“A1023”, “0”)
    
    MsgBox result

End Sub

Dalam kasus ini, hasil yang lebih besar dari 0 berarti karakter ditemukan.

Mencari dari awal string

Untuk mencari dari awal string, Anda tidak perlu menentukan posisi awal, sehingga dimulai dari 1. Itulah nilai bawaan setiap kali kecuali Anda menyatakan sebaliknya.

Sub ChExist()

    Dim result As Integer
    result = InStr("Report_2026_Final", "2026")
    
    MsgBox result

End Sub

Cara Menggunakan VBA InStr dalam Pernyataan If

Saat bekerja dengan spreadsheet nyata, Anda tidak hanya mencari sebuah angka; Anda mencoba mengambil keputusan. Cara paling umum menggunakan InStr adalah di dalam pernyataan If untuk memfilter data.

Sepanjang tutorial ini, kita akan menggunakan dataset contoh, Orders, dengan kolom: ID, CustomerName, Email, City, dan OrderNotes.

If InStr(...) > 0 Then

Karena InStr mengembalikan 0 saat gagal menemukan apa pun, kita memeriksa apakah hasilnya ada ketika mengembalikan angka lebih besar dari 0.

Pada contoh di bawah, kode melihat kolom OrderNotes (kolom 5). Jika menemukan kata “Fragile”, kode menuliskan “Handle Carefully” di kolom 6.

Sub ChExist()

    Dim i As Integer
    
    ' Loop through rows 2 to 51
    For i = 2 To 51
    
        ' Check if the order notes mention "Fragile"
        If InStr(Cells(i, 5).Value, "Fragile") > 0 Then
            Cells(i, 6).Value = "Handle Carefully"
        End If
        
    Next i

End Sub

Pemeriksaan kondisional untuk kata kunci dan pemfilteran teks

Anda juga dapat menggunakan fungsi InStr untuk memeriksa kata kunci dalam string, terutama jika frasa sedikit berubah. Misalnya, kode di bawah memeriksa apakah catatan memuat “Call” (seperti “Call on arrival” atau “Call before delivery”). Kemudian menandai dan menambahkan tag “Cal Customer” di kolom 6.

Sub ChExist()

    Dim i As Integer
    
    ' Loop through rows 2 to 51
    For i = 2 To 51
    
        ' Check if the order notes mention “Call”
        If InStr(Cells(i, 5).Value, “Call”) > 0 Then
            Cells(i, 6).Value = “Call Customer”
        End If
        
    Next i

End Sub

Sensitivitas Huruf Besar/Kecil dan Mode Compare pada VBA InStr

Secara bawaan, InStr peka huruf besar/kecil (disebut vbBinaryCompare). Misalnya Anda mencari “chicago” tetapi datanya “Chicago”, InStr akan mengembalikan 0.

Untuk mengatasi hal ini, gunakan argumen compare di mana:

  • vbBinaryCompare (Bawaan): peka huruf besar/kecil (“A” tidak sama dengan “a”.)

  • vbTextCompare: tidak peka huruf besar/kecil “A” sama dengan “a”.

Pada contoh di bawah, InStr mengembalikan 0 karena mencari “fragile” (huruf kecil) di dalam “Fragile items”.

Sub CheckFragile()

    Dim result As Integer
    
    result = InStr(1, "Fragile items", "fragile", vbBinaryCompare)
    
    MsgBox result

End Sub

Namun, menggunakan vbTextCompare mengembalikan 1 melalui pencarian yang sama tetapi mengabaikan huruf besar/kecil.

Sub CheckFragile()

    Dim result As Integer
    
    result = InStr(1, "Fragile items", "fragile", vbTextCompare)
    
    MsgBox result

End Sub

VBA InStr dengan Posisi Awal

Terkadang Anda tidak ingin memulai pencarian dari awal string. Argumen start memberi tahu VBA dari posisi mana pencarian dimulai.

Pada contoh di bawah, argumen start ditetapkan ke 10, sehingga VBA mulai mencari dari karakter ke-10, bukan yang pertama. Lalu menemukan "delivery" lebih jauh di dalam string.

Sub CheckUrgent()

    Dim result As Integer
    
    result = InStr(10, “Deliver before noon - urgent delivery”, “delivery”)
    
    MsgBox result

End Sub

Hasil contoh di atas adalah 31, yaitu posisi tempat "delivery" dimulai.

Metode ini berguna saat Anda menginginkan kemunculan kedua dari sesuatu atau ingin mengabaikan prefiks yang sudah diketahui saat bekerja dengan pola berulang.

VBA InStr vs. InStrRev

Seperti yang sudah Anda pelajari, InStr mencari dari kiri ke kanan. Namun, InStrRev mencari dari kanan ke kiri.

Sebagai contoh, kita menggunakan InStrRev untuk menemukan titik terakhir pada email. Hasilnya adalah 18, yaitu posisi titik sebelum “com”.

Sub CheckChr()

    Dim result As Integer
    
    result = InStrRev("john.jacobs@email.com", ".")
    
    MsgBox result

End Sub

Anda akan mendapati InStrRev lebih berguna saat Anda membutuhkan kemunculan terakhir dari sesuatu atau saat bekerja dengan nama file, email, atau path.

Kasus Penggunaan Umum VBA InStr

Setelah melihat contoh cara kerja fungsi VBA InStr, mari lihat kasus penggunaan yang umum.

Memeriksa apakah sel berisi kata kunci

Misalkan Anda memiliki dataset pesanan pelanggan, dan perlu menandai pesanan untuk penanganan tertentu. Kode melihat kolom OrderNotes dan menandai apa pun yang memuat “noon”.

Sub ChExist()

    Dim i As Integer
    
    ' Loop through rows 2 to 51
    For i = 2 To 51
    
        If InStr(1, "Deliver before noon", "noon", vbTextCompare) > 0 Then
            ' Logic to mark as "Morning Delivery"
        End If
        
    Next i

End Sub

Memvalidasi teks bergaya email

Anda juga dapat menggunakan fungsi InStr untuk cepat memeriksa format email yang valid. Misalnya, kode di bawah memeriksa apakah email memuat @ dan menuliskan “Valid Email Format” di kolom 6.

Sub ValidateEmail()

    Dim i As Integer
    
    ' Loop through rows 2 to 51
    For i = 2 To 51
    
        If InStr(Cells(i, 3).Value, "@") > 0 Then
            Cells(i, 6).Value = "Valid Email Format"
        End If
        
    Next i

End Sub

Mendeteksi pemisah seperti koma atau tanda hubung

Anda dapat menggunakan fungsi InStr untuk memeriksa apakah ada tanda hubung, koma, atau garis miring dalam teks. Pada contoh di bawah, kode melakukan loop pada OrderNotes (kolom E), memeriksa apakah ada koma dalam teks, lalu menulis hasil di kolom F.

Sub ValidateEmail()

    Dim i As Integer
    Dim commaPos As Integer
    Dim OrderNotes As String
    
    For i = 2 To 51
        
        OrderNotes = Cells(i, 5).Value
        
        commaPos = InStr(1, OrderNotes, ",")
        
        ' If a comma exists, mark it
        If commaPos > 0 Then
            Cells(i, 6).Value = "Has comma"
        Else
            Cells(i, 6).Value = "No comma"
        End If
        
    Next i

End Sub

Kesalahan Umum dengan VBA InStr

Bahkan sebagai pengembang berpengalaman, Anda mungkin menemui beberapa masalah dengan fungsi InStr yang membuat kode berperilaku tak terduga. Berikut masalah umum yang saya temui dan cara mengatasinya:

  • Lupa bahwa InStr berbasis 1: Selalu ingat posisi dimulai dari 1, bukan 0. Jika Anda berasal dari Python atau JavaScript, ini terasa janggal pada awalnya.

  • Menganggap InStr seperti True/False: Ingat bahwa InStr tidak mengembalikan True atau False. Jika Anda ingin menemukan sesuatu, Anda harus memeriksa apakah hasilnya > 0.

  • Mengabaikan sensitivitas huruf besar/kecil: Seperti yang kini Anda tahu, InStr secara bawaan peka huruf besar/kecil. Jika huruf besar/kecil tidak penting, nyatakan dengan vbTextCompare pada argumen compare.

  • Tertukar antara string1 dan string2: Selalu ingat argumen pertama adalah tempat Anda mencari. Argumen kedua adalah apa yang Anda cari. Jika Anda mencari seperti ini InStr(SearchTerm, FullText), Anda akan selalu mendapatkan 0.

VBA InStr vs. Fungsi String VBA Lainnya

Karena InStr biasanya menunjukkan di mana string berada dalam teks, mari bandingkan dengan fungsi string lainnya.

InStr vs. Like

Operator Like digunakan untuk pencocokan pola. Misalnya, kode di bawah memeriksa “Fragile”, tetapi menggunakan pola *, yang berarti “apa pun sebelum atau sesudah”.

Sub ChExist()

    Dim i As Integer
    
    ' Loop through rows 2 to 51
    For i = 2 To 51
    
        If Cells(i, 5).Value Like "*Fragile*" Then
            Cells(i, 6).Value = "Handle Carefully"
        End If
        
    Next i

End Sub

Gunakan InStr jika Anda hanya perlu tahu apakah suatu teks ada, dan Like ketika Anda perlu memeriksa teks dalam pola yang kompleks.

InStr vs. Replace

Walaupun Anda bisa menggunakan InStr untuk mengubah keseluruhan nilai dalam sel, fungsi Replace mengubah teks tertentu di dalam sel.

Pada contoh di bawah, fungsi Replace langsung menukar “Fragile” dengan “Handle Carefully” di dalam teks.

Sub ReplaceOrder()

    Dim i As Integer
    
    For i = 2 To 51
        Cells(i, 5).Value = Replace(Cells(i, 5).Value, "Fragile", "Handle Carefully")
    Next i

End Sub

InStr vs. Mid

Fungsi Mid digunakan untuk mengekstrak teks dari string. Karena itu, Anda sering menggunakan Mid bersama InStr untuk mengekstrak teks setelah mendapatkan posisinya. 

Kode di bawah mengekstrak domain dari email pada dataset. Fungsi InStr menemukan posisi kemunculan "@" pada email, kemudian Mid mulai mengekstrak setelahnya. Kode diakhiri dengan menuliskan domain ke kolom H.

Sub ExtractDomain()

    Dim i As Integer
    Dim pos As Integer
    Dim domain As String
    
    For i = 2 To 51
        
        pos = InStr(1, Cells(i, 3).Value, "@")
        
        If pos > 0 Then
            domain = Mid(Cells(i, 3).Value, pos + 1)
            Cells(i, 8).Value = domain
        End If
        
    Next i

End Sub

InStr vs.Split

Fungsi Split digunakan untuk memecah teks menjadi bagian-bagian dengan menentukan pemisah. 

Pada contoh di bawah, kode membaca setiap baris dari kolom A, memeriksa apakah ada koma, lalu membagi teks menjadi dua bagian. Kode menuliskan Name → kolom B dan City → kolom C.

Sub SplitTextColumn()

    Dim i As Integer
    Dim lastRow As Integer
    Dim parts As Variant
    Dim text As String
    
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To lastRow
        
        text = Cells(i, 1).Value
        
        ' Only split if a comma exists
        If InStr(1, text, ",") > 0 Then
            
            parts = Split(text, ",")
            
            Cells(i, 2).Value = parts(0) ' Name
            Cells(i, 3).Value = parts(1) ' City
            
        End If
        
    Next i

End Sub

Praktik Terbaik untuk Menggunakan VBA InStr

Untuk menghindari kesalahan pada VBA Anda, saya merekomendasikan praktik terbaik berikut, yang membantu saya menghemat waktu:

  • Gunakan vbTextCompare saat huruf besar/kecil tidak penting: Karena sebagian besar data nyata tidak konsisten dalam penulisan huruf, Anda bisa melewatkan kecocokan jika mengandalkan argumen compare bawaan.

  • Gabungkan dengan “If” untuk logika yang jelas: Selalu usahakan menyertakan logika untuk mengembalikan nilai, karena InStr sendiri hanya memberikan angka.

  • Periksa > 0, bukan posisi persisnya, kecuali Anda memang membutuhkan posisinya.

  • Jaga agar parsing tetap mudah dibaca. Jangan menumpuk terlalu banyak fungsi dalam satu baris.

Kesimpulan

InStr itu sederhana, tetapi Anda akan menggunakannya di mana-mana. Fungsi ini memberi Anda posisi suatu string di dalam string lain, dan satu angka itu menggerakkan banyak keputusan di VBA—apakah sesuatu ada, dari mana harus mengekstrak, dan apa yang harus dilakukan makro berikutnya. Sendirian, ini hanya pencarian. Digabungkan dengan fungsi seperti Mid, Replace, atau bahkan Split, ini menjadi bagian dari alur kerja yang benar-benar menyelesaikan pekerjaan.

Ikuti Data Analysis in Excel course kami untuk menguasai analitik lanjutan. Selain itu, ikuti Intermediate Power Query in Excel untuk mempelajari transformasi data dan penggunaan bahasa M.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Penulis teknis Data Science dengan pengalaman langsung dalam analitik data, business intelligence, dan data science. Saya menulis konten praktis berfokus industri tentang SQL, Python, Power BI, Databricks, dan rekayasa data, yang berakar pada pekerjaan analitik dunia nyata. Tulisan saya menjembatani kedalaman teknis dan dampak bisnis, membantu para profesional mengubah data menjadi keputusan yang meyakinkan.

FAQ

Apa yang sebenarnya dikembalikan oleh InStr?

Fungsi ini mengembalikan posisi tempat kecocokan dimulai. Jika tidak ditemukan apa pun, fungsi mengembalikan 0.

Apakah InStr peka huruf besar/kecil?

Ya, InStr secara bawaan peka huruf besar/kecil. ”Fragile” dan ”fragile” dianggap berbeda. Gunakan vbTextCompare jika Anda tidak menginginkan perbandingan peka huruf besar/kecil.

Apa arti bahwa InStr berbasis 1?

Karakter pertama dalam string berada di posisi 1, bukan 0. Ini penting saat Anda menggunakan hasilnya dalam fungsi lain.

Apa yang terjadi jika salah satu nilainya Null?

Hasilnya juga akan Null, bukan 0.

Apa perbedaan antara InStr dan InStrRev?

InStr mencari dari kiri ke kanan, sedangkan InStrRev mulai dari kanan ke kiri. Gunakan yang terakhir ketika kemunculan terakhir yang penting.

Topik
Excel

Belajar bersama DataCamp

Program

Dasar-Dasar Excel

16 Hr
Dapatkan keterampilan dasar yang Anda butuhkan untuk menggunakan Excel, mulai dari mempersiapkan data, menulis rumus, hingga membuat visualisasi. Tidak diperlukan pengalaman sebelumnya.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow