INDEX MATCH Excel: Cara Kerja + Kapan Lebih Baik dari VLOOKUP
TL;DR
INDEX MATCH adalah kombinasi dua fungsi Excel buat nyari data: MATCH nyari posisi baris dari nilai yang dicari, lalu INDEX ngambil isi sel di posisi itu dari kolom hasil. Sintaksnya =INDEX(kolom_hasil; MATCH(nilai_dicari; kolom_cari; 0)). Beda dari VLOOKUP, INDEX MATCH bisa nyari ke arah kiri dan gak rusak waktu ada kolom disisipin di tengah tabel.
INDEX MATCH adalah kombinasi dua fungsi Excel yang kerja bareng buat nyari data. MATCH nyari posisi barisnya, INDEX ngambil isinya.
Duet ini udah jadi standar analis Excel selama belasan tahun, jauh sebelum XLOOKUP muncul. Dan sampai sekarang masih relevan, soalnya jalan di semua versi Excel sejak 2007.
Contoh di sini pakai data toko_berkah: 8 produk warung dengan kode, nama, kategori, harga, dan stok.
| A — kode_produk | B — nama_produk | C — kategori | D — harga | E — stok | |
|---|---|---|---|---|---|
| 2 | BRK-001 | Beras Pandan Wangi 5kg | Sembako | 78.000 | 42 |
| 3 | BRK-002 | Minyak Goreng 2L | Sembako | 34.500 | 15 |
| 4 | BRK-003 | Gula Pasir 1kg | Sembako | 17.000 | 60 |
| 5 | BRK-004 | Kopi Bubuk 200g | Minuman | 23.000 | 8 |
| 6 | BRK-005 | Teh Celup 25s | Minuman | 12.500 | 0 |
| 7 | BRK-006 | Sabun Mandi 80g | Perawatan | 4.500 | 120 |
| 8 | BRK-007 | Sampo Sachet 12s | Perawatan | 15.000 | 33 |
| 9 | BRK-008 | Deterjen 800g | Perawatan | 21.500 | 27 |
Apa itu INDEX MATCH di Excel?
INDEX MATCH adalah cara nyari data di tabel dengan dua fungsi bersarang: MATCH ngasih tau posisi baris tempat nilai yang kamu cari berada, terus INDEX ngambil isi sel di posisi itu dari kolom yang kamu tunjuk.
Bentuk lengkapnya:
=INDEX(kolom_hasil; MATCH(nilai_dicari; kolom_cari; 0))
Bacanya dari dalam ke luar. MATCH jalan duluan, hasilnya angka. Angka itu jadi bahan buat INDEX.
Aku pakai titik koma (;) sebagai pemisah argumen — sesuai setelan regional Indonesia. Kalau Excel kamu English, ganti jadi koma.
Gimana cara kerja fungsi INDEX?
INDEX ngambil nilai dari sebuah range berdasarkan nomor baris (dan opsional nomor kolom).
=INDEX(D2:D9; 4)
Hasil: 23000
Artinya: dari range D2:D9, ambil baris ke-4. Baris ke-4 di range itu adalah D5, isinya harga Kopi Bubuk.
Hati-hati di sini: angka 4 itu posisi di dalam range, bukan nomor baris di sheet. Range mulai dari D2, jadi baris ke-1 = D2, baris ke-4 = D5. Salah paham soal ini yang bikin banyak orang meleset satu baris.
Penjelasan argumen lengkapnya ada di halaman fungsi INDEX.
Gimana cara kerja fungsi MATCH?
MATCH kebalikannya. Kamu kasih nilai, dia balikin posisinya.
=MATCH("BRK-004"; A2:A9; 0)
Hasil: 4
BRK-004 ada di baris ke-4 dari range A2:A9. Selesai, itu doang kerjaan MATCH.
Angka 0 di akhir itu argumen match_type, artinya "cari yang persis sama". Ini yang hampir selalu kamu pakai.
| match_type | Artinya | Syarat data |
|---|---|---|
0 | Persis sama | Bebas, gak perlu urut |
1 | Nilai terbesar yang ≤ nilai dicari | Harus urut naik |
-1 | Nilai terkecil yang ≥ nilai dicari | Harus urut turun |
Lupa nulis 0 itu sumber bug klasik. Default MATCH adalah 1, dan di tabel yang gak urut hasilnya ngawur tanpa error.
Gimana cara gabungin INDEX dan MATCH?
Tinggal taruh MATCH di dalam argumen kedua INDEX. Kasusnya: kode produk diketik di sel H2, harganya muncul di H3.
- Ketik
BRK-004di H2. - Di H3, tulis kerangkanya:
=INDEX(D2:D9; ...)— D2:D9 adalah kolom harga, isi yang mau kamu ambil. - Ganti titik-titik itu sama MATCH:
MATCH(H2; A2:A9; 0)— A2:A9 kolom kode, tempat nyari. - Tutup kurung, Enter.
=INDEX(D2:D9; MATCH(H2; A2:A9; 0))
Hasil: 23000
Kalau rumusnya bakal di-copy ke bawah, kunci range-nya:
=INDEX($D$2:$D$9; MATCH($H2; $A$2:$A$9; 0))
Aturan tanda dolar lengkapnya ada di glosarium absolute reference.
Kapan INDEX MATCH lebih baik dari VLOOKUP?
Rumus VLOOKUP yang setara:
=VLOOKUP(H2; A2:D9; 4; FALSE)
Angka 4 itu titik lemahnya. Begitu ada yang nyisipin kolom baru di antara B dan C, kolom harga geser ke posisi 5, tapi rumusnya masih nunjuk 4. Hasilnya berubah diam-diam — gak ada error, cuma angka yang salah.
INDEX MATCH gak pernah kena masalah ini, soalnya dia nunjuk range, bukan nomor kolom. Kolom digeser, range-nya ikut geser sendiri.
| Hal | VLOOKUP | INDEX MATCH |
|---|---|---|
| Arah pencarian | Cuma ke kanan | Kiri, kanan, bebas |
| Kolom disisipkan | Rumus jadi salah | Rumus tetap benar |
| Range yang dibaca | Seluruh lebar tabel | Cuma 2 kolom |
| Panjang rumus | Pendek | Lebih panjang |
| Kurva belajar | Gampang | Butuh paham 2 fungsi |
| Versi Excel | Semua | Semua (sejak 2007) |
Jujur aja: VLOOKUP lebih gampang diketik dan lebih gampang diajarin. Buat tabel sekali pakai yang kolomnya gak bakal berubah, VLOOKUP udah cukup. INDEX MATCH kepakai di file yang hidup lama dan disentuh banyak orang.
Dan kalau kantor kamu udah full Excel 365, XLOOKUP ngasih semua keuntungan INDEX MATCH dengan sintaks yang lebih pendek.
Gimana cara INDEX MATCH nyari ke kiri?
Balik kasusnya: kamu punya nama produk, mau tau kodenya. Kolom kode (A) ada di kiri kolom nama (B). VLOOKUP nyerah, INDEX MATCH gak peduli.
=INDEX(A2:A9; MATCH("Teh Celup 25s"; B2:B9; 0))
Hasil: BRK-005
MATCH nyari di kolom B, INDEX ngambil dari kolom A. Urutan kolom di sheet gak ngaruh sama sekali.
Gimana bikin INDEX MATCH dua arah?
INDEX punya argumen ketiga: nomor kolom. Isi dua-duanya pakai MATCH, dan kamu dapat lookup silang — baris dan kolom sekaligus.
Anggap kamu ketik kode produk di H2 dan nama kolom (misalnya "stok") di H3:
=INDEX($A$1:$E$9;
MATCH($H$2; $A$1:$A$9; 0);
MATCH($H$3; $A$1:$E$1; 0))
H2 = BRK-006, H3 = stok → Hasil: 120
MATCH pertama nyari baris, MATCH kedua nyari kolom. Perhatiin range-nya mulai dari baris 1 (baris header), soalnya MATCH kolom butuh baca judul kolom.
Buat lookup horizontal yang lebih sederhana, ada juga rumus HLOOKUP.
Contoh kasus: cek margin produk toko_berkah
Bu Sari punya sheet kedua isinya harga modal per kode produk. Dia mau tau margin tiap produk tanpa nyusun ulang dua tabel itu.
Di sheet modal, kolom A kode produk dan kolom B harga modal. Rumus di sheet produk:
Modal : =INDEX(modal!$B$2:$B$9; MATCH($A2; modal!$A$2:$A$9; 0))
Margin : =D2 - INDEX(modal!$B$2:$B$9; MATCH($A2; modal!$A$2:$A$9; 0))
Margin%: =(D2 - INDEX(modal!$B$2:$B$9; MATCH($A2; modal!$A$2:$A$9; 0))) / D2
Hasilnya bikin kaget. Beras Pandan Wangi — produk paling laku dan paling mahal — margin-nya cuma 8%. Sabun Mandi yang harganya Rp 4.500 doang punya margin 33%.
Dari 8 produk toko_berkah, 3 produk berkontribusi 71% ke total profit, dan semuanya dari kategori Perawatan. Sembako muter uang paling banyak, tapi profitnya tipis.
Insight kayak gini yang bikin lookup ada gunanya. Bukan biar rumusnya keren, tapi biar tau produk mana yang beneran ngasih makan tokonya.
Kesalahan umum pakai INDEX MATCH
1. Lupa angka 0 di MATCH
=MATCH(H2; A2:A9) tanpa argumen ketiga bakal pakai mode approximate. Di tabel kode produk yang gak urut alfabet, hasilnya ngawur — dan gak ada error yang ngingetin kamu.
2. Range INDEX dan range MATCH beda tinggi
=INDEX(D2:D9; MATCH(H2; A2:A20; 0)) bakal kasih hasil salah. Dua range harus mulai dari baris yang sama dan sama panjangnya. MATCH ngitung posisi relatif, jadi kalau titik startnya beda, posisinya meleset.
3. Lupa kunci range waktu di-drag
Copy rumus ke bawah tanpa $ bikin range-nya ikut turun. Baris ke-10 bakal nyari di range A10:A17 — yang isinya udah kosong. Kunci semua range: $A$2:$A$9.
4. Tipe data beda
Kode 1001 hasil import CSV sering kesimpan sebagai teks. MATCH bakal keluar #N/A walaupun mata kamu lihat angka yang sama. Cek pakai =ISNUMBER(A2), atau samain dulu formatnya.
5. Bungkus IFERROR terlalu cepat
=IFERROR(INDEX(...); "") emang bikin laporan bersih. Tapi juga nyembunyiin data yang beneran gak ketemu. Isi teks yang jelas kayak "Kode gak terdaftar", biar kamu tau bedanya sel kosong dan data hilang.
FAQ soal INDEX MATCH
INDEX MATCH lebih cepat dari VLOOKUP?
Di data kecil bedanya gak kerasa. Di data besar INDEX MATCH biasanya sedikit lebih cepat, soalnya dia cuma baca dua kolom, sementara VLOOKUP baca seluruh lebar tabel yang kamu blok. Bedanya baru kelihatan di file dengan ribuan rumus dan puluhan ribu baris.
Kenapa hasilnya #REF! bukan #N/A?
#REF! berarti INDEX diminta ngambil baris yang di luar range. Misalnya MATCH balikin 12 padahal range INDEX cuma 8 baris. Biasanya gara-gara range INDEX dan range MATCH beda panjang atau beda titik start.
Bisa nyari pakai dua kriteria sekaligus?
Bisa, gabungin kriterianya jadi satu teks di dalam MATCH: =INDEX(D2:D9; MATCH(H2&H3; A2:A9&C2:C9; 0)). Di Excel 2019 ke bawah, rumus ini harus dikonfirmasi pakai Ctrl+Shift+Enter. Di Excel 365 langsung jalan.
Masih perlu belajar INDEX MATCH kalau udah ada XLOOKUP?
Perlu, kalau kamu kerja di lingkungan yang versinya campur-campur. Banyak kantor Indonesia masih pakai Excel 2016 dan 2019, terutama di perusahaan yang lisensinya belum di-upgrade. File berisi XLOOKUP bakal keluar #NAME? di mesin mereka.
Ringkasnya
MATCH nyari posisi. INDEX ngambil isi. Digabung, jadi lookup yang gak rusak waktu tabel kamu diubah orang lain.
Rumus intinya cuma satu, hapal ini aja: =INDEX(kolom_hasil; MATCH(dicari; kolom_cari; 0)).
Angka 0 itu jangan pernah dilupain.
Sekarang buka file kerjaan kamu dan ubah satu VLOOKUP jadi INDEX MATCH. Kalau mau latihan step by step pakai contoh interaktif, kulik di halaman fungsi MATCH.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel Terkait
Template Laporan Penjualan Excel: Struktur yang Dipakai Analis
Template laporan penjualan yang bener cuma butuh 3 sheet. Yang bikin laporan orang rusak biasanya karena data mentah dan hasil dicampur di satu tempat.
Cara Menghubungkan Google Sheets ke Looker Studio
Nyambungin Google Sheets ke Looker Studio cuma butuh 5 menit. Yang bikin lama itu datanya belum rapi. Ini urutan yang bener.
Cara Share Google Sheets dengan Aman: Permission & Protected Range
Panduan step by step share Google Sheets tanpa bikin rumus kehapus atau data gaji bocor — dari level permission, protected range, sampai audit siapa yang buka.