Pada artikel sebelumnya kita telah mempelajari fungsi Left dan Right untuk mengambil karakter dari bagian kiri maupun kanan sebuah teks.
Namun, bagaimana jika informasi yang dibutuhkan justru berada di tengah sebuah string?
Misalnya:
-
kode INV-2026-00125, Anda ingin mengambil 2026;
-
NIK 3578123456789012, Anda ingin mengambil kode wilayah;
-
tanggal 2026-08-15, Anda ingin mengambil bulan;
-
nomor seri PRD-A12-009, Anda hanya membutuhkan bagian A12.
Untuk kebutuhan seperti ini, VBA menyediakan fungsi Mid.
Apa Itu Fungsi Mid?
Mid adalah fungsi string yang digunakan untuk mengambil sejumlah karakter mulai dari posisi tertentu di dalam sebuah teks.
Berbeda dengan Left dan Right, fungsi ini memberikan fleksibilitas karena Anda dapat menentukan sendiri posisi awal karakter yang akan diambil.
Sintaks Fungsi Mid
Sintaks umum fungsi Mid adalah:
Mid(String, Start, Length)
Keterangan:
-
String adalah teks yang akan diproses.
-
Start adalah posisi karakter pertama yang akan diambil.
-
Length adalah jumlah karakter yang ingin diambil.
Catatan: Posisi karakter pada VBA dimulai dari 1, bukan dari 0.
Cara Kerja Fungsi Mid
Misalkan terdapat teks berikut.
Microsoft Excel
Kemudian dijalankan kode berikut.
Mid("Microsoft Excel", 11, 5)
Hasilnya:
Excel
Artinya:
-
mulai dari karakter ke-11;
-
ambil sebanyak 5 karakter.
Contoh Dasar
Sub ContohMid()
MsgBox Mid("Belajar VBA Excel", 9, 3)
End Sub
Hasil:
VBA
Mengambil Data dari Sel
Sub AmbilData()
MsgBox Mid(Range("A1").Value, 5, 4)
End Sub
Jika A1 berisi:
INV-2026-00125
hasilnya:
2026
Menggunakan Variabel
Sub ContohVariabel()
Dim Kode As String
Kode = "PRD-A12-009"
MsgBox Mid(Kode, 5, 3)
End Sub
Hasil:
A12
Jika Length Dihilangkan
Parameter ketiga bersifat opsional.
Mid("Belajar VBA Excel", 9)
Hasil:
VBA Excel
Karena VBA akan mengambil seluruh karakter mulai dari posisi ke-9 hingga akhir string.
Menggunakan Mid Bersama Len
Sering kali panjang teks perlu diperiksa terlebih dahulu.
Sub Contoh()
Dim Teks As String
Teks = Range("A1").Value
If Len(Teks) >= 10 Then
MsgBox Mid(Teks, 6, 5)
End If
End Sub
Pendekatan ini membuat kode lebih aman ketika memproses data dengan panjang yang bervariasi.
Menggunakan Mid Bersama InStr
Misalkan terdapat data berikut.
Andi|Surabaya|Programmer
Untuk mengambil nama kota.
Sub AmbilKota()
Dim Data As String
Dim Posisi As Long
Data = "Andi|Surabaya|Programmer"
Posisi = InStr(Data, "|")
MsgBox Mid(Data, Posisi + 1, 9)
End Sub
Hasil:
Surabaya
Studi Kasus
Perusahaan menggunakan format nomor transaksi berikut.
TRX-2026-JKT-00125
Kode cabang selalu berada di posisi ke-10 sebanyak tiga karakter.
Sub AmbilCabang()
Dim Nomor As String
Nomor = Range("A2").Value
MsgBox Mid(Nomor, 10, 3)
End Sub
Hasil:
JKT
Mid vs Left vs Right
Ketiga fungsi ini sering digunakan bersama.
| Fungsi | Kegunaan |
|---|---|
Left |
Mengambil karakter dari kiri |
Mid |
Mengambil karakter dari posisi tertentu |
Right |
Mengambil karakter dari kanan |
Pilih fungsi sesuai letak data yang ingin diambil.
Kesalahan yang Sering Terjadi
Menganggap Posisi Dimulai dari Nol
Salah.
Mid("Excel", 0, 2)
Posisi pertama pada VBA adalah 1, bukan 0.
Salah Menentukan Posisi Awal
Jika posisi awal bergeser satu karakter saja, hasil yang diperoleh juga akan berbeda.
Selalu periksa struktur data sebelum menentukan nilai parameter Start.
Tidak Memvalidasi Panjang String
Jika posisi awal melebihi panjang string, fungsi Mid tidak akan menghasilkan data yang diharapkan.
Gunakan Len bila diperlukan.
Tips Praktis
💡 Gunakan Mid jika data berada di tengah string.
💡 Kombinasikan Mid dengan Len agar proses ekstraksi lebih aman.
💡 Gunakan InStr untuk menentukan posisi awal secara dinamis, sehingga kode tetap bekerja meskipun panjang data berubah.
💡 Jangan menggunakan angka posisi secara sembarangan. Pastikan Anda memahami format data yang diproses.
💡 Jika struktur data sering berubah, hindari menggunakan posisi tetap dan manfaatkan kombinasi InStr, InStrRev, atau Split.
Ringkasan
| Fungsi | Kegunaan |
|---|---|
Mid |
Mengambil karakter dari posisi tertentu |
Mid + Len |
Memvalidasi panjang teks sebelum diproses |
Mid + InStr |
Mengambil data berdasarkan posisi karakter tertentu |
Mid tanpa Length |
Mengambil teks hingga akhir string |
Kesimpulan
Mid merupakan fungsi string yang sangat fleksibel karena memungkinkan Anda mengambil karakter mulai dari posisi tertentu di dalam sebuah teks. Fungsi ini sering digunakan untuk mengekstrak kode, tanggal, nomor transaksi, maupun bagian tertentu dari data yang memiliki format tetap. Dengan mengombinasikannya bersama Len dan InStr, Anda dapat membangun proses pengolahan teks yang lebih dinamis, akurat, dan mudah dipelihara.
