Anda bekerja di toko kopi yang menjual sepuluh produk. Setiap produk punya kode — P001 sampai P010 — dan harga ada di sebuah tabel master. Lalu datang pesanan: “Berapa harga P006?” Anda bisa menggulir tabel, tapi kalau pesanan ada seratus per hari, menggulir bukan solusi. Yang Anda butuhkan adalah sebuah rumus yang menjawab: cari P006, lalu kembalikan harganya.
Itulah inti lookup — operasi paling sering dipakai di Excel setelah penjumlahan. Tiga fungsi menjawabnya: VLOOKUP (klasik, ada di semua versi), INDEX-MATCH (fleksibel, bebas arah), dan XLOOKUP (modern, pengganti keduanya). Banyak tutorial membandingkan ketiganya seperti perang agama. Pendekatan artikel ini berbeda: ketiganya punya tempat, dan memahami keduanya membuat Anda membaca spreadsheet orang lain tanpa tersesat.
Artikel ini menuntun Anda dari nol — sintaks tiap fungsi, kapan memakai exact vs approximate match, dua keterbatasan VLOOKUP yang memunculkan INDEX-MATCH, dan mengapa XLOOKUP menyelesaikan keduanya. Setiap rumus bisa Anda coba langsung di berkas latihan.
Apa Itu Lookup
Lookup adalah operasi mencari sebuah nilai di sebuah rentang, lalu mengembalikan nilai lain yang berhubungan dengannya. Dua peran selalu hadir:
- Kunci (lookup value): nilai yang Anda cari — misalnya kode produk
P006. - Hasil (return value): nilai yang ingin Anda dapatkan — misalnya harga
Rp 145.000.
Di antara keduanya ada tabel sumber — daftar pasangan kunci dan hasil. Tugas fungsi lookup adalah menjembatani kunci ke hasil dengan benar dan cepat, sekaligus menangani kasus ketika kunci tidak ditemukan.
Tiga fungsi di artikel ini berbeda pada cara mereka menjembatani, bukan pada apakah mereka menjembatani:
| Fungsi | Cara kerja | Arah lookup |
|---|---|---|
| VLOOKUP | Cari kunci di kolom pertama tabel, kembalikan kolom ke-N di sebelah kanannya | Hanya ke kanan |
| INDEX-MATCH | MATCH cari posisi kunci; INDEX ambil nilai pada posisi itu dari kolom mana pun | Bebas (kiri/kanan) |
| XLOOKUP | Cari kunci di satu array, kembalikan nilai pada posisi yang sama dari array lain | Bebas (kiri/kanan) |
Inilah seluruh perjalanan lookup dalam satu gambar:
Persiapan: Unduh Berkas Latihan
Agar Anda tidak sekadar membaca, sediakan berkas latihan berikut yang berisi dataset produk kopi dan tabel karyawan, plus lembar latihan bertahap untuk ketiga fungsi.
Berkas berisi delapan lembar:
- PETUNJUK — ikhtisar isi workbook dan legenda warna.
- DATA-Produk — 10 baris master produk (Kode, Nama, Kategori, Harga, Stok). Sudah berbentuk Excel Table
tblProduk. - DATA-Karyawan — 12 baris master karyawan (NIP, Nama, Departemen, Jabatan, Masa Kerja, Gaji). Sudah berbentuk Excel Table
tblKaryawan. - TABEL-BONUS — tabel tier untuk latihan approximate match: Masa Kerja ke Bonus %.
- 01-VLOOKUP — latihan VLOOKUP: exact, approximate, dan demonstrasi keterbatasan.
- 02-INDEX-MATCH — latihan INDEX-MATCH: exact, lookup ke kiri, dan 2-way lookup.
- 03-XLOOKUP — latihan XLOOKUP: if_not_found, lookup ke kiri, return array, dan approximate match.
- Perbandingan — matriks perbandingan ketiga fungsi.
Sel input berwarna biru tua dan tebal — silakan diubah untuk menguji rumus. Sel rumus berwarna hitam dan hitung otomatis. Ikuti langkah di bawah langsung di berkas ini.
Bagian 1 — VLOOKUP
VLOOKUP (vertical lookup) mencari sebuah kunci di kolom pertama sebuah tabel, lalu mengembalikan nilai dari kolom ke-N di baris yang sama, menghitung dari kolom pertama itu. Fungsi ini hadir di Excel sejak versi paling awal dan masih paling banyak dipakai di spreadsheet warisan.
Sintaks
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
Empat argumen:
| Argumen | Peran | Contoh |
|---|---|---|
lookup_value | Kunci yang dicari | P006 atau sel C8 |
table_array | Tabel sumber (kolom pertama = tempat mencari) | 'DATA-Produk'!$A$5:$E$14 |
col_index_num | Nomor kolom hasil, dihitung dari kolom pertama tabel | 4 (untuk Harga) |
range_lookup | FALSE = exact, TRUE = approximate. Opsional, default TRUE | FALSE |
Peringatan default. Argumen keempat bersifat opsional, tetapi default-nya adalah
TRUE(approximate). Lupa menulisFALSEadalah sumber error lookup paling umum. Biasakan selalu menulis argumen keempat secara eksplisit.
Latihan 1.1 — Exact Match: Harga dari Kode Produk
Pertanyaan: berapa harga produk dengan kode P003?
Di lembar 01-VLOOKUP, sel input berisi kode P003. Rumus di sel hasil:
=VLOOKUP(C8, 'DATA-Produk'!$A$5:$E$14, 4, FALSE)
Cara membacanya, kata per kata: “Cari nilai di C8 (yaitu P003), di kolom pertama rentang 'DATA-Produk'!$A$5:$E$14. Setelah ketemu, kembalikan nilai di kolom ke-4 baris itu. Gunakan exact match (FALSE).” Kolom ke-4 dari rentang A:E adalah kolom D — yaitu Harga. Hasilnya: Rp 120.000.
Kunci dari exact match ada pada argumen keempat FALSE. Excel mencari P003 secara persis di kolom A. Jika tidak ada (misalnya Anda mengetik P999), VLOOKUP mengembalikan #N/A — sinyal jujur bahwa kunci tidak ditemukan. Beberapa orang membungkusnya dengan IFERROR(..., 0) atau IFNA(...) untuk mengganti #N/A dengan teks yang lebih ramah, tetapi XLOOKUP (Bagian 3) punya cara yang lebih bersih.
Satu catatan penting tentang col_index_num: angka ini dihitung relatif terhadap tabel, bukan terhadap kolom Excel. Jika table_array Anda dimulai dari kolom B (bukan A), maka kolom ke-4 adalah kolom E. Lupa relatifitas ini adalah jebakan klasik — dan kita akan lihat di Latihan 1.4 bahwa angka manual ini juga membuat VLOOKUP rapuh terhadap perubahan struktur tabel.
Latihan 1.2 — Approximate Match: Bonus dari Masa Kerja
Approximate match bukan error — ia adalah fitur untuk tabel tier (skala bertingkat). Contoh klasik: tabel bonus berdasarkan masa kerja, tabel tarif pajak penghasilan progresif, atau tabel grade nilai. Di lembar TABEL-BONUS:
| Masa Kerja Minimal (thn) | Bonus (%) |
|---|---|
| 0 | 5% |
| 3 | 8% |
| 5 | 12% |
| 8 | 15% |
| 10 | 20% |
Pertanyaan: berapa bonus karyawan dengan masa kerja 7 tahun? Logikanya: 7 tahun jatuh di antara tier 5 (12%) dan tier 8 (15%). Karena 7 belum mencapai 8, bonusnya mengikuti tier terbesar yang tidak lebih besar dari 7 — yaitu tier 5 tahun, bonus 12%.
Rumusnya:
=VLOOKUP(C18, 'TABEL-BONUS'!$A$5:$B$9, 2, TRUE)
Bedanya dengan Latihan 1.1 hanya di argumen keempat: TRUE bukan FALSE. Excel mencari 7 di kolom pertama. Karena 7 tidak ada persis, ia mengambil baris dengan nilai terbesar yang <= 7 — yaitu baris tier 5. Lalu mengembalikan kolom ke-2 baris itu: 12%.
Syarat wajib approximate match. Agar
TRUEbekerja benar, kolom pertama tabel wajib terurut naik. Kalau tidak, Excel bisa berhenti di baris yang salah dan mengembalikan bonus yang menyesatkan. Tabel tier seperti di atas sudah terurut secara alami — itu sebabnya approximate match cocok untuknya.
Approximate match adalah alat yang kuat tetapi berbahaya jika disalahpahami. Banyak pengguna secara tidak sengaja memakai TRUE (karena lupa argumen keempat) untuk tabel yang seharusnya exact — hasilnya terlihat masuk akal tetapi salah, karena Excel “menebak” tier terdekat. Aturan praktis: hampir selalu tulis FALSE; hanya pakai TRUE ketika Anda sengaja mendesain tabel tier.
Latihan 1.3 — Keterbatasan 1: Hanya Mencari ke Kanan
VLOOKUP punya batas arsitektur: ia hanya bisa mencari di kolom pertama tabel dan mengembalikan kolom di kanannya. Sekarang balik pertanyaannya: Anda tahu nama karyawan “Citra Lestari”, ingin tahu NIP-nya. Tabel karyawan punya NIP di kolom A dan Nama di kolom B. NIP ada di kiri Nama. VLOOKUP tidak bisa.
Percobaan di lembar latihan memperlihatkannya:
=VLOOKUP(C25, 'DATA-Karyawan'!$B$5:$H$16, -1, FALSE)
Hasilnya: #N/A atau error, karena col_index_num tidak bisa negatif. Anda tidak bisa meminta “kolom ke-minus-1 di kiri”. Untuk mengakali ini, beberapa orang menyalin kolom NIP ke kanan kolom Nama — tapi itu menduplikasi data dan rentan inkonsistensi. Solusi yang benar adalah beralih ke INDEX-MATCH (Bagian 2) atau XLOOKUP (Bagian 3).
Latihan 1.4 — Keterbatasan 2: col_index_num yang Rapuh
Karena col_index_num ditulis sebagai angka (4 untuk Harga), VLOOKUP tidak tahu nama kolom yang Anda maksud. Coba eksperimen ini: buka DATA-Produk, klik kanan header kolom D (Harga), pilih Insert. Sekarang ada kolom baru di antara Kategori dan Harga. Harga bergeser menjadi kolom ke-5. Tapi rumus VLOOKUP Anda masih menulis 4 — sehingga ia sekarang mengembalikan nilai kolom baru yang kosong, atau nilai Kategori yang salah.
Ini disebut kegetasan struktural (structural fragility). Satu perubahan layout di tabel sumber merusak hasil rumus tanpa pesan error. Anda tidak mendapat #N/A — Anda mendapat angka yang terlihat benar tetapi salah. INDEX-MATCH dan XLOOKUP memakai referensi range ($D$5:$D$14), bukan angka, sehingga otomatis menyesuaikan saat kolom disisipkan.
Kedua keterbatasan ini — hanya ke kanan dan col_index rapuh — memunculkan kebutuhan akan fungsi yang lebih fleksibel. INDEX-MATCH menjawab keduanya.
Bagian 2 — INDEX-MATCH
INDEX-MATCH bukan satu fungsi, melainkan kombinasi dua fungsi yang bekerja bersama. MATCH mencari posisi sebuah nilai di sebuah array. INDEX mengambil nilai pada posisi tertentu dari sebuah array. Dipasangkan, MATCH memberi tahu INDEX posisi mana yang harus diambil — dan karena kedua array dipilih terpisah, Anda bebas menempatkan return_range di mana saja, termasuk di kiri lookup_array.
Sintaks
=INDEX(return_range, MATCH(lookup_value, lookup_range, [match_type]))
Dua fungsi, tiga peran:
| Bagian | Peran | Contoh |
|---|---|---|
lookup_value | Kunci yang dicari (di dalam MATCH) | C8 (berisi P003) |
lookup_range | Kolom tempat mencari kunci | 'DATA-Produk'!$A$5:$A$14 |
return_range | Kolom tempat mengambil hasil | 'DATA-Produk'!$D$5:$D$14 (Harga) |
match_type | 0 = exact (disarankan), 1 = approximate naik, -1 = approximate turun | 0 |
Bacaan alur. MATCH dikerjakan lebih dulu di dalam: ia mengembalikan sebuah angka posisi (misalnya 3, artinya
P003ada di baris ke-3 array). Angka itu lalu disodorkan ke INDEX, yang mengambil nilai pada posisi ke-3 darireturn_range. Hasil akhirnya identik dengan VLOOKUP — tetapi dengan keleluasaan struktural yang jauh lebih besar.
Latihan 2.1 — Exact Match: Harga dari Kode (versi INDEX-MATCH)
Pertanyaan yang sama dengan 1.1, dikerjakan dengan INDEX-MATCH:
=INDEX('DATA-Produk'!$D$5:$D$14, MATCH(C8, 'DATA-Produk'!$A$5:$A$14, 0))
Cara membaca: “MATCH cari C8 (P003) di kolom Kode secara exact (0); kembalikan pososinya — misalnya 3. Lalu INDEX ambil nilai ke-3 dari kolom Harga.” Hasil: Rp 120.000, sama persis dengan VLOOKUP. Yang berbeda adalah strukturnya: return_range (Harga, kolom D) dan lookup_range (Kode, kolom A) disebut terpisah sebagai dua rentang penuh, bukan sebagai bagian dari satu tabel besar.
Latihan 2.2 — Lookup ke Kiri: NIP dari Nama
Inilah kasus yang VLOOKUP tidak mampu (Latihan 1.3). Anda tahu nama “Citra Lestari”, ingin tahu NIP-nya. NIP ada di kolom A (paling kiri), Nama di kolom B. Dengan INDEX-MATCH:
=INDEX('DATA-Karyawan'!$A$5:$A$16, MATCH(C15, 'DATA-Karyawan'!$B$5:$B$16, 0))
return_range = kolom NIP (A), lookup_range = kolom Nama (B). NIP berada di kiri Nama — dan tidak ada masalah, karena kedua rentang dipilih independen. Hasil: K003. Inilah inti keunggulan INDEX-MATCH: arah lookup bebas.
Konsekuensi praktis dari kemampuan ini cukup besar. Di dunia nyata, kolom identitas (NIP, NIK, kode) hampir selalu di kiri, sedangkan atribut (nama, jabatan) di kanan. Ketika pengguna memberi nama dan bertanya “apa NIP-nya?”, VLOOKUP gagal dan INDEX-MATCH menyelesaikannya tanpa trik.
Latihan 2.3 — 2-Way Lookup: Baris × Kolom
Kasus yang lebih menantang: Anda tahu nama “Indra Kusuma”, dan ingin mengambil field “Gaji Pokok” — tetapi nama field juga diinput oleh pengguna, bisa berubah menjadi “Tunjangan” atau “Departemen” kapan saja. Ini adalah pencarian dua dimensi: cari baris berdasarkan Nama, cari kolom berdasarkan header, ambil sel pada perpotongan itu.
INDEX bisa menerima dua nomor posisi: INDEX(array, row_num, column_num). Jadi kita pakai dua MATCH — satu untuk baris, satu untuk kolom:
=INDEX('DATA-Karyawan'!$A$5:$H$16,
MATCH(C22, 'DATA-Karyawan'!$B$5:$B$16, 0),
MATCH(C23, 'DATA-Karyawan'!$A$4:$H$4, 0))
Cara membaca: MATCH pertama cari posisi nama di kolom Nama (misalnya 9 — baris ke-9). MATCH kedua cari posisi “Gaji Pokok (Rp)” di baris header (misalnya 6 — kolom ke-6). INDEX ambil sel pada baris ke-9, kolom ke-6 dari tabel karyawan. Hasil: Rp 12.500.000.
Satu rumus ini menjawab dua pertanyaan sekaligus — baris mana dan kolom mana. Ganti input nama atau input field, dan hasil menyesuaikan. Ini adalah resep untuk dasbor interaktif sederhana: pengguna memilih entitas dan metrik, rumus mengisi nilai.
Latihan 2.4 — Approximate Match via MATCH
MATCH juga mendukung approximate, dengan argumen match_type:
0— exact (yang paling sering dipakai).1— approximate, mengembalikan posisi nilai terbesar yang<= lookup_value. Syarat: array terurut naik.-1— approximate, mengembalikan posisi nilai terkecil yang>= lookup_value. Syarat: array terurun.
Untuk tabel bonus di Latihan 1.2, versi INDEX-MATCH:
=INDEX('TABEL-BONUS'!$B$5:$B$9, MATCH(C30, 'TABEL-BONUS'!$A$5:$A$9, 1))
match_type = 1 berperilaku sama dengan VLOOKUP TRUE: masa kerja 7 → tier 5 (terbesar <= 7) → bonus 12%. Logika identik, sintaks berbeda. Memilih antara keduanya untuk kasus tier adalah soal preferensi dan kompatibilitas versi Excel.
INDEX-MATCH menyelesaikan kedua keterbatasan VLOOKUP. Tapi ia punya biaya: sintaks yang lebih panjang, dua fungsi bersarang yang harus dipahami pembaca, dan tidak ada cara bawaan untuk menangani #N/A (Anda tetap butuh IFERROR di luarnya). Fungsi modern XLOOKUP hadir untuk menyatukan kelebihan keduanya.
Bagian 3 — XLOOKUP
XLOOKUP dirilis Microsoft untuk Excel 365 pada 2019 dan hadir di Excel 2021 serta Excel untuk Web. Tujuannya jelas: menggabungkan kemudahan VLOOKUP dengan fleksibilitas INDEX-MATCH, plus fitur baru. Fungsi ini menjadi default pilihan untuk semua lookup baru di versi Excel yang mendukungnya.
Sintaks
=XLOOKUP(lookup_value, lookup_array, return_array,
[if_not_found], [match_mode], [search_mode])
Tiga argumen wajib, tiga opsional:
| Argumen | Peran | Contoh |
|---|---|---|
lookup_value | Kunci yang dicari | C8 (berisi P009) |
lookup_array | Kolom/rentang tempat mencari | 'DATA-Produk'!$A$5:$A$14 |
return_array | Kolom/rentang tempat mengambil hasil | 'DATA-Produk'!$D$5:$D$14 |
[if_not_found] | Nilai jika tidak ketemu (default #N/A) | "Kode tidak ditemukan" |
[match_mode] | 0 = exact (default), -1 = exact/next smaller, 1 = exact/next larger, 2 = wildcard | 0 |
[search_mode] | 1 = first-to-last (default), -1 = last-to-first, 2 = binary naik, -2 = binary turun | 1 |
Default yang masuk akal. Tidak seperti VLOOKUP, default XLOOKUP adalah exact match (
match_mode = 0). Anda tidak perlu menulis apa pun untuk mendapat exact match — ini sendiri menyelamatkan banyak bug yang muncul dari lupa argumenFALSEdi VLOOKUP.
Latihan 3.1 — Basic + if_not_found
Lookup paling sederhana, harga dari kode produk:
=XLOOKUP(C8, 'DATA-Produk'!$A$5:$A$14, 'DATA-Produk'!$D$5:$D$14, "Kode tidak ditemukan")
Cara membaca: “Cari C8 di kolom Kode, kembalikan Harga. Jika tidak ketemu, tampilkan teks ‘Kode tidak ditemukan’.” Tiga keunggulan langsung terlihat: (1) tidak ada argumen FALSE yang harus ditulis karena exact adalah default; (2) if_not_found bawaan menggantikan IFERROR(..., "teks") — lebih jelas dan tidak menyembunyikan error lain; (3) lookup_array dan return_array dipilih terpisah, jadi bebas arah seperti INDEX-MATCH.
Coba ubah input ke P999 (tidak ada di tabel). Hasilnya bukan #N/A yang dingin, melainkan teks ramah yang Anda definisikan. Ini penting untuk laporan yang dibaca orang non-teknis — pesan jelas lebih baik daripada kode error.
Latihan 3.2 — Lookup ke Kiri
Kasus NIP dari Nama (Latihan 2.2), versi XLOOKUP:
=XLOOKUP(C15, 'DATA-Karyawan'!$B$5:$B$16, 'DATA-Karyawan'!$A$5:$A$16, "Nama tidak ditemukan")
Simetris dan mudah dibaca: cari di kolom Nama, kembalikan dari kolom NIP. NIP di kiri Nama — tidak masalah. XLOOKUP mewarisi kebebasan arah dari INDEX-MATCH tanpa sintaks bersarang.
Latihan 3.3 — Return Array: Banyak Kolom Sekaligus
Ini fitur yang VLOOKUP dan INDEX-MATCH tidak punya. XLOOKUP bisa mengembalikan lebih dari satu kolom sekaligus. Daripada menulis empat rumus terpisah untuk mengambil Nama, Kategori, dan Harga dari sebuah kode, Anda menulis satu:
=XLOOKUP(C22, 'DATA-Produk'!$A$5:$A$14, 'DATA-Produk'!$B$5:$D$14)
Argumen return_array adalah rentang multi-kolom B:D. Di Excel 365 dengan dynamic arrays, hasil tumpah (spill) ke kanan secara otomatis — sel D, E, F terisi Nama, Kategori, Harga dari satu rumus di sel pertama. Ubah kode input, ketiga sel terupdate bersamaan.
Catatan kompatibilitas. Dynamic arrays dan spill hanya bekerja di Excel 365 dan 2021. Di versi lebih lama, rumus ini tetap valid tetapi hanya mengembalikan nilai kolom pertama dari
return_arraykecuali Anda memakai legacy Ctrl+Shift+Enter. Untuk spreadsheet yang dibagikan lintas versi, uji dulu.
Latihan 3.4 — Approximate Match dengan match_mode
Approximate match di XLOOKUP dikendalikan oleh match_mode, bukan argumen boolean:
0— exact (default).-1— exact match atau, jika tidak ketemu, item terbesar berikutnya yang lebih kecil.1— exact match atau, jika tidak ketemu, item terkecil berikutnya yang lebih besar.2— wildcard (*dan?).
Bonus dari masa kerja, versi XLOOKUP:
=XLOOKUP(C30, 'TABEL-BONUS'!$A$5:$A$9, 'TABEL-BONUS'!$B$5:$B$9, 0, -1)
if_not_found = 0 (jika masa kerja di bawah 0, bonus 0), match_mode = -1 (exact atau tier terbesar yang <= masa kerja). Secara perilaku, hasilnya sama dengan VLOOKUP TRUE dan INDEX-MATCH match_type 1. Keunggulan: argumen eksplisit membuat intent lebih jelas, dan if_not_found memberi Anda kontrol atas kasus “di luar jangkauan tabel” tanpa IFERROR tambahan.
Latihan 3.5 — 2-Way Lookup dengan XLOOKUP Bersarang
Untuk 2-way lookup (baris × kolom, seperti Latihan 2.3), XLOOKUP bisa bersarang: XLOOKUP luar memilih kolom, XLOOKUP dalam memilih baris dan mengembalikan seluruh baris itu sebagai array:
=XLOOKUP(field, header_range,
XLOOKUP(nama, nama_range, seluruh_tabel))
XLOOKUP dalam (XLOOKUP(nama, ...seluruh_tabel)) mengembalikan satu baris penuh (array horizontal). XLOOKUP luar mencari field di header dan mengembalikan sel yang sesuai dari baris itu. Hasil: satu nilai pada perpotongan. Logikanya sama dengan INDEX + 2 MATCH, tapi dibungkus dengan sintaks yang lebih konsisten.
Matriks Perbandingan
Setelah tiga fungsi diperlihatkan, ringkaslah perbedaannya dalam satu tabel. Lembar Perbandingan di berkas latihan menampilkan ini dalam format hidup; di bawah adalah inti yang paling mempengaruhi keputusan.
| Aspek | VLOOKUP | INDEX-MATCH | XLOOKUP |
|---|---|---|---|
| Versi Excel | Semua | Semua | 365 / 2021 / Web |
| Arah lookup | Hanya ke kanan | Bebas | Bebas |
| Default match | Approximate (berbahaya) | Exact (0) | Exact |
| if_not_found bawaan | Tidak (#N/A) | Tidak (#N/A) | Ya (argumen ke-4) |
| Return array (multi-kolom) | Tidak | Tidak | Ya (spill) |
| 2-way lookup | Rumit (VLOOKUP+MATCH) | Ya (INDEX+2 MATCH) | Ya (nested XLOOKUP) |
| col_index manual rapuh | Ya (angka kolom) | Tidak (range) | Tidak (range) |
| Approximate match | TRUE, wajib terurut | MATCH type 1, terurut | match_mode -1, robust |
| Tingkat kesulitan | Mudah, kaku | Sedang | Mudah & fleksibel |
| Rekomendasi 2026 | Warisan / versi lama | Jika belum punya XLOOKUP | Default pilihan utama |
Tiga aturan praktis muncul dari tabel ini:
- Punya Excel 365/2021? Pakai XLOOKUP untuk hampir semua kasus baru. Satu fungsi, default aman, bebas arah, dengan pengaman bawaan.
- Masih Excel 2019 atau lebih lama? INDEX-MATCH adalah pengganti terbaik. Lebih panjang tetapi menutup dua keterbatasan utama VLOOKUP.
- Mewarisi spreadsheet lama dengan VLOOKUP yang masih bekerja? Tidak perlu menulis ulang. Tapi untuk lookup baru yang Anda tambahkan, jangan mulai dari VLOOKUP — itu menambah utang teknis.
Contoh Terapan: Lookup Harga Produk dari Kode
Mari satukan konsep dalam satu alur kerja nyata. Kasus: kasir toko kopi menerima pesanan dan perlu mengisi harga otomatis dari kode produk.
- Siapkan master. Lembar DATA-Produk berisi kode unik di kolom A (paling kiri) dengan atribut di kanannya. Wajib: kode harus unik — lookup mengembalikan cocokan pertama yang ditemukan; duplikat menyembunyikan baris berikutnya.
- Pilih fungsi. Karena versi Excel mendukung XLOOKUP, pakai itu. Di sel harga di slip penjualan:
=XLOOKUP(kode, 'DATA-Produk'!Kode, 'DATA-Produk'!Harga, 0). Argumen ke-40berarti kode tidak dikenal menghasilkan harga 0, bukan#N/Ayang merusak total. - Uji kasus tepi. Masukkan kode yang salah (
P999), kode dengan spasi ekstra (P006), dan kode kosong. Periksa bahwaif_not_foundbekerja dan tidak ada#N/Ayang merembet ke perhitungan turunan (sepertiSUMatau perkalian jumlah × harga). - Tambah validasi data. Agar kasir tidak mengetik kode bebas, tambahkan Data Validation (Data → Data Validation → List) pada sel input kode, bersumber dari kolom Kode. Mencegah error lebih murah daripada menangkapnya.
Contoh Terapan: Lookup Gaji dari Tabel Karyawan
Kasus kedua, dari konteks SDM: hitung gaji total karyawan dari NIP, lalu bonus dari masa kerja.
- Ambil gaji pokok. NIP ada di kolom A tabel karyawan (paling kiri) — kondisi ideal untuk semua fungsi. Dengan XLOOKUP:
=XLOOKUP(nip, 'DATA-Karyawan'!NIP, 'DATA-Karyawan'![Gaji Pokok]). - Ambil masa kerja dan cari bonus. Gaji pokok saja tidak cukup; bonus ditentukan masa kerja. Ambil masa kerja dulu (
=XLOOKUP(nip, NIP, MasaKerja)), lalu cari bonus di tabel tier denganmatch_mode = -1:=XLOOKUP(masa_kerja, 'TABEL-BONUS'!MK, 'TABEL-BONUS'!Bonus, 0, -1). Dua lookup berurutan — keduanya exact untuk langkah pertama, approximate untuk langkah tier. - Gabungkan. Gaji akhir = gaji pokok + tunjangan + (gaji pokok × bonus %). Semua nilai datang dari lookup; tidak ada angka manual yang rentan salah ketik.
Alur ini menggabungkan tiga pelajaran: lookup untuk atribut (gaji), lookup untuk tier (bonus), dan peran penting pemisahan “ambil dulu, hitung kemudian”. Penyebaran lookup ke beberapa sel terpisah membuat audit lebih mudah dibandingkan satu rumus raksasa bersarang.
Cek Pemahaman
1. Rekan Anda menulis =VLOOKUP(A2, Sheet2!A:E, 3) tanpa argumen keempat. Hasilnya kadang benar, kadang salah, tanpa pola jelas. Apa sebabnya dan bagaimana memperbaikinya?
Lihat jawaban
Tanpa argumen keempat, VLOOKUP default ke TRUE (approximate match). Excel mencari nilai terbesar yang <= A2 di kolom A, dengan asumsi kolom itu terurut naik. Jika data tidak terurut atau ada kode yang mirip, hasil meleset ke baris yang tidak dimaksudkan — tanpa pesan error. Perbaiki: tambahkan FALSE secara eksplisit, =VLOOKUP(A2, Sheet2!A:E, 3, FALSE), untuk memaksa exact match. Aturan praktis: selalu tulis argumen keempat, hampir selalu FALSE.
2. Anda perlu mencari gaji berdasarkan nama, tetapi di tabel karyawan NIP (kolom A) ada di kiri Nama (kolom B), dan Gaji (kolom F) ada di kanan. Mengapa VLOOKUP tidak bisa, dan dua alternatif apa yang bisa?
Lihat jawaban
VLOOKUP mencari di kolom pertama tabel. Untuk mencari berdasarkan Nama, Anda harus menetapkan table_array mulai dari kolom B — tetapi kemudian Gaji (kolom F) menjadi kolom ke-5 dalam tabel itu (B, C, D, E, F) dan rumus =VLOOKUP(nama, B:F, 5, FALSE) sebenarnya bisa bekerja. Triknya menyusutkan tabel agar dimulai dari kolom pencarian. Namun ini kaku: setiap kali lookup_value bergeser kolom, Anda harus menyusun ulang table_array. Alternatif yang lebih bersih: (a) INDEX-MATCH — =INDEX(F:F, MATCH(nama, B:B, 0)), bebas arah; (b) XLOOKUP — =XLOOKUP(nama, B:B, F:F), simetris dan default exact. Keduanya tidak peduli urutan kolom.
3. Apa perbedaan praktis antara match_mode = -1 di XLOOKUP dan TRUE di VLOOKUP untuk tabel tier? Mengapa seseorang mungkin lebih memilih salah satunya?
Lihat jawaban
Secara hasil untuk tabel tier terurut naik, keduanya identik: mengembalikan tier terbesar yang <= lookup_value. Perbedaan praktis: (1) XLOOKUP argumen eksplisit -1 lebih jelas menyatakan intent (exact-or-next-smaller) dibanding boolean TRUE yang ambigu; (2) XLOOKUP memiliki argumen if_not_found terpisah untuk kasus di luar jangkauan tabel (misalnya masa kerja negatif), VLOOKUP TRUE tidak — Anda butuh IFERROR tambahan; (3) VLOOKUP TRUE mensyaratkan tabel terurut, XLOOKUP match_mode = -1 secara teknis tidak mensyaratkan tetapi hasil tetap hanya masuk akal jika tier terurut. Preferensi: pakai XLOOKUP jika tersedia; VLOOKUP TRUE jika spreadsheet harus kompatibel dengan Excel lama.
4. Seorang kolega mengeluh: “XLOOKUP saya mengembalikan #N/A padahal datanya jelas ada.” Sebutkan tiga kemungkinan penyebab paling umum.
Lihat jawaban
Tiga penyebab klasik: (1) Spasi atau karakter tak terlihat — " P006" (dengan spasi awal) tidak sama dengan "P006". Bersihkan dengan TRIM dan CLEAN. (2) Tipe data beda — "006" sebagai teks berbeda dari 6 sebagai angka. Format sel tidak mengubah tipe; gunakan konversi eksplisit (VALUE atau TEXT). (3) Rentang tidak selaras — lookup_array dan return_array harus berukuran dan arah sama; kalau satu kolom dan satu baris, atau panjang berbeda, hasil tidak terduga. Tambahkan if_not_found untuk membedakan “benar-benar tidak ada” dari error rumus, lalu periksa sumber data dengan TRIM + CLEAN + konversi tipe.
Kesalahan Umum
Lupa argumen keempat di VLOOKUP. Default TRUE menyebabkan approximate match yang sering salah. Biasakan selalu menulis FALSE (atau 0) secara eksplisit. Lebih baik lagi, beralih ke XLOOKUP yang default-nya exact.
Memakai approximate match untuk kode unik. Approximate (TRUE, MATCH type 1, match_mode -1) dirancang untuk tabel tier. Memakainya untuk kode produk atau NIP — yang seharusnya exact — menghasilkan “cocokan terdekat” yang menyesatkan tanpa error.
Spasi dan tipe data. Lookup exact sangat sensitif: "P006" ≠ " P006" ≠ P006 sebagai angka. Data hasil impor (dari sistem lain, copy-paste dari web) sering membawa karakter tak terlihat. Bersihkan dengan TRIM(CLEAN(...)) dan pastikan tipe konsisten sebelum lookup.
Kolom lookup tidak unik. VLOOKUP, INDEX-MATCH, dan XLOOKUP (dengan search_mode default) semua mengembalikan cocokan pertama. Jika kode atau NIP duplikat di tabel sumber, baris kedua dst. tersembunyi. Validasi keunikan dengan Conditional Formatting (Highlight Cells → Duplicate Values) sebelum membangun lookup di atasnya.
Mengabaikan #N/A yang merembet. Lookup yang menghasilkan #N/A lalu dijumlahkan (SUM, perkalian) menularkan error ke seluruh perhitungan turunan. Gunakan IFERROR, IFNA, atau argumen if_not_found XLOOKUP untuk mengganti #N/A dengan nilai netral (0 atau teks) sebelum ia merembet.
VLOOKUP dengan table_array tanpa $. Menulis =VLOOKUP(A2, Sheet2!A5:E14, 4, FALSE) lalu menyalin rumus ke bawah menggeser A5:E14 menjadi A6:E15, A7:E16, dst. Kunci dengan $: Sheet2!$A$5:$E$14. Atau jauh lebih baik, pakai Excel Table sebagai sumber (tblProduk[Kode]) — referensi tabel otomatis absolut.
Dipakai di Praktik
- Slip penjualan & invoicing. Kasir atau admin mengetik kode produk; lookup mengisi nama, harga, dan stok. Dengan XLOOKUP return array, satu rumus mengisi tiga kolom sekaligus.
- Penggajian dan tunjangan. HR mengambil gaji pokok, tunjangan, dan masa kerja dari NIP; lookup tier menghitung bonus dan pajak progresif. Approximate match adalah alat standar untuk skala tarif.
- Rekonsiliasi antar-sistem. Kode barang di sistem inventory vs kode di sistem akuntansi sering tidak identik; lookup menjembatani kedua tabel untuk verifikasi konsistensi.
- Dasbor interaktif. 2-way lookup (INDEX + 2 MATCH atau nested XLOOKUP) memungkinkan pengguna memilih entitas dan metrik dari dropdown, dengan satu rumus mengisi nilai pada perpotongan.
- Pencarian referensi riset. Mahasiswa S2/S3 yang menggabungkan beberapa dataset (misalnya kode BPS ke nama kabupaten, atau kode ISIC ke deskripsi industri) memakai lookup sebagai operasi standar penggabungan tabel — padanan
JOINdi SQL ataumergedi Pandas/R.
Lanjutan
- Pivot Table Excel — setelah data dirapikan dengan lookup, pivot table adalah alat berikutnya untuk meringkas; keduanya sering berurutan dalam analisis.
- Tendensi Sentral — lookup mengambil nilai individual; tendensi sentral meringkas banyak nilai; kenali batas masing-masing.
- Memilih Topik Tesis (FINER) — penggabungan dataset multi-sumber dengan lookup adalah langkah awal banyak analisis kuantitatif tesis.
- Workflow Tesis End-to-End — di mana tahap persiapan dan penggabungan data ber-lookup menyatu dalam alur tesis menyeluruh.