Panduan Lengkap IF Bertingkat Untuk Semua Kasus
Kamu mau jadi jago logic di spreadsheet? Mulai dari ngasih label grade, ngitung komisi bertingkat, sampai bikin rule validasi kompleks — semua itu bisa ditangani pakai IF bertingkat (nested IF).
Artikel ini jelasin langkah demi langkah, lengkap contoh nyata, formula siap-copas untuk Excel dan Google Sheets, tips debugging, plus alternatif modern supaya nggak nyangkut di IF yang kepanjangan.
Santai aja gayanya, cocok buat remaja yang pengin paham cepat dan praktek langsung. --- ## Sekilas tentang IF (untuk yang baru pertama kali)
Fungsi `IF` itu rumus logika dasar yang bilang: jika kondisi benar lakukan A, kalau tidak lakukan B.
Sintaks dasar: ``` =IF(test_logika, nilai_jika_true, nilai_jika_false) ```
Contoh mudah: ``` =IF(A2>=75, "Lulus", "Remedial") ```
Artinya kalau nilai di A2 >= 75 → tampilkan "Lulus", kalau tidak → "Remedial".
Di Google Sheets sama persis (pensyntax menggunakan koma `,` atau titik koma `;` tergantung regional — pakai yang berlaku di sheet-mu). --- ## Apa itu IF bertingkat (nested IF) dan kapan dipakai?
IF bertingkat = memasukkan fungsi `IF` di dalam `IF` lain. Dipakai kalau ada lebih dari dua kondisi.
Contoh nyata: * Grade Ujian: A, B, C, D, E — lebih dari dua hasil. * Komisi penjualan: tier 0–10 juta, 10–50 juta, >50 juta — tiap tier beda persentase. * Kategori umur: Anak, Remaja, Dewasa, Lansia.
Bentuk umum: ``` =IF(kondisi1, hasil1, IF(kondisi2, hasil2, IF(kondisi3, hasil3, hasil_default))) ```
Kunci: urutkan kondisi dari yang paling spesifik/ketat ke yang paling umum, supaya hasil tepat. --- ## 1. Langkah mudah bikin IF bertingkat — pola kerja
Sebelum nulis rumus panjang, ikuti skema ini: 1. Tulis logika dalam kata: contoh "jika nilai ≥ 85 → A, else if ≥ 70 → B, else if ≥ 55 → C, else D". 2. Buat flow sederhana (paper/notes): kondisi 1 → kondisi 2 → else. 3. Tulis rumus baris demi baris dan tes tiap langkah (pakai `IFERROR`/kolom bantu). 4. Gunakan TRIM/TO_NUMBER kalau nilai dari import teks. 5. Bungkus IF paling luar yang meng-handle nilai default.
Contoh pseudocode: ``` IF nilai >= 85 THEN "A" ELSE IF nilai >= 70 THEN "B" ELSE IF nilai >= 55 THEN "C" ELSE "D" ```
Rumus Excel/Sheets: ``` =IF(A2>=85,"A",IF(A2>=70,"B",IF(A2>=55,"C","D"))) ``` --- ## 2. Contoh dasar: Grade Ujian (kasus paling sering)
Tabel contoh (kolom A: Nama, B: Nilai): | Nama | Nilai | | ---- | ----- | | Andi | 92 | | Siti | 78 | | Budi | 61 | | Rina | 48 |
Rumus di kolom C (Grade): ``` =IF(B2>=85,"A", IF(B2>=70,"B", IF(B2>=55,"C", "D"))) ```
Penjelasan: * Pertama cek A (≥85), kalau false lanjut ke B, lalu C, terakhir D.
Tips: pakai `IFERROR` untuk handle non-number: ``` =IFERROR(IF(B2>=85,"A",IF(B2>=70,"B",IF(B2>=55,"C","D"))),"Input Tidak Valid") ``` --- ## 3. Contoh: Komisi Penjualan Bertingkat
Skenario: * Penjualan ≤ 10.000.000 → komisi 2% * 10.000.001 – 50.000.000 → komisi 5% * > 50.000.000 → komisi 7%
Kolom B = Total Penjualan. Kolom C = Komisi (Rp).
Rumus komisi: ``` =IF(B2<=10000000, B2*0.02, IF(B2<=50000000, B2*0.05, B2*0.07)) ```
Jika mau komisi hanya untuk kelebihan (marginal) seperti pajak bertingkat, rumus lebih rumit — contoh di bagian lanjut. --- ## 4. Kasus multi-kriteria: IF + AND, IF + OR
Sering kondisi butuh lebih dari satu syarat. Gunakan `AND` (semua harus true) dan `OR` (salah satu cukup). ### Contoh 1: Bonus hadir
Syarat bonus: Nilai ≥ 80 dan tidak pernah izin (Kolom C = Jumlah Izin). ``` =IF(AND(B2>=80, C2=0), "Bonus", "Tidak") ``` ### Contoh 2: Diskon khusus
Diskon jika pelanggan VIP atau pembelian > 1.000.000 ``` =IF(OR(D2="VIP", E2>1000000), "Diskon 10%", "No Discount") ```
Gabung dengan nested IF: ``` =IF(AND(B2>=90, D2="VIP"), "Super Bonus", IF(AND(B2>=90, D2<>"VIP"), "Bonus", "Tidak")) ``` --- ## 5. Nesting lebih dalam: contoh nyata paket pengiriman
Rules: * Berat ≤ 1kg → Reguler (Rp 10.000) * 1kg < Berat ≤ 5kg → Ekspedisi (Rp 25.000) * Berat > 5kg → Cargo (Rp 50.000) * Kirim ke luar pulau → +Rp 20.000 surcharge
Kolom B = Berat (kg), Kolom C = Destinasi (Lokal/LuarPulau)
Rumus tarif: ``` =IF(B2<=1, 10000, IF(B2<=5, 25000, 50000)) + IF(C2="LuarPulau",20000,0) ```
Tip: letakkan surcharge di akhir supaya logic tetap bersih. --- ## 6. Contoh kompleks: pajak penghasilan bertingkat (marginal)
Misal tarif: * 0 – 50 juta: 5% * 50.000.001 – 250 juta: 15% * 250.000.001 – 500 juta: 25% * > 500 juta: 30%
Kalau pakai marginal tax, perhitungan harus pecah tiap segmen. Gunakan formula gabungan IF dan perhitungan segmen.
Contoh sederhana per baris (kolom B = penghasilan): ``` =IF(B2<=50000000, B2*0.05, IF(B2<=250000000, 50000000*0.05 + (B2-50000000)*0.15, IF(B2<=500000000, 50000000*0.05 + 200000000*0.15 + (B2-250000000)*0.25, 50000000*0.05 + 200000000*0.15 + 250000000*0.25 + (B2-500000000)*0.30))) ```
Ribet? Iya. Makanya alternatif `VLOOKUP`/`XLOOKUP` + table tarif sering lebih rapi (lihat bagian alternatif). --- ## 7. Handling teks: IF berdasarkan teks (case sensitive?)
Jika mau cek teks sama persis: ``` =IF(A2="Lunas", "OK", "Belum") ```
Case-sensitive? `=` tidak sensitif terhadap case di Excel/Sheets; tetapi kalau butuh case-sensitive, di Excel pakai `EXACT`: ``` =IF(EXACT(A2,"Lunas"), "OK", "Belum") ```
Di Google Sheets `EXACT` juga ada.
Jika mau kata ada di dalam teks (substring), gunakan `SEARCH`/`FIND` + `ISNUMBER`: ``` =IF(ISNUMBER(SEARCH("promo", A2)), "Ada Promo", "No Promo") ```
`SEARCH` tidak case-sensitive. `FIND` case-sensitive. --- ## 8. IF bertingkat dengan tanggal
Contoh: Klasifikasi tren penjualan berdasarkan tanggal: * Jika tanggal ≤ TODAY() - 30 → Lama * Jika between TODAY()-30 and TODAY()-7 → Stabil * Jika > TODAY()-7 → Baru
Rumus: ``` =IF(A2 <= TODAY()-30, "Lama", IF(A2 <= TODAY()-7, "Stabil", "Baru")) ```
Contoh lainnya: hitung status perpanjangan lisensi: ``` =IF(A2 < TODAY(), "Kadaluarsa", IF(A2 <= TODAY()+30, "Segera", "Aktif")) ``` --- ## 9. Nested IF untuk validasi & flag
Kadang kamu mau flag baris yang bermasalah: misal nilai kosong, jenis data salah, atau angka negatif.
Formulanya: ``` =IF(A2="", "Kosong", IF(NOT(ISNUMBER(A2)), "Bukan Angka", IF(A2<0,"Negatif","OK"))) ```
Urutannya: cek kosong dulu, lalu format, lalu nilai. --- ## 10. Mengurangi kompleksitas: tips anti-IF-explosion
IF bertingkat bisa cepat jadi ribet dan sulit dibaca. Berikut trik supaya lebih rapi: ### A. Gunakan kolom bantu
Pisahkan langkah jadi beberapa kolom: * Kolom X: hasil pengecekan awal (mis. valid? TRUE/FALSE) * Kolom Y: hasil kedua * Kolom Z: final formula (gunakan referensi ke X,Y)
Ini memudahkan debug. ### B. Gunakan IFS (Excel 2016+ & Google Sheets punya IFS)
Sintaks: ``` =IFS(kondisi1, hasil1, kondisi2, hasil2, TRUE, hasil_default) ```
Contoh grade: ``` =IFS(B2>=85,"A", B2>=70,"B", B2>=55,"C", TRUE,"D") ``` ### C. Gunakan SWITCH (Excel 2016+ / Google Sheets)
Bagus kalau dasar kondisi = nilai pasti (kategori teks): ``` =SWITCH(A2, "Jan", 1, "Feb", 2, "Mar", 3, "Unknown") ``` ### D. Gunakan LOOKUP / VLOOKUP / XLOOKUP dengan table mapping
Buat table mapping kondisi ke hasil, lalu lookup hasil berdasarkan nilai masuk. Untuk rentang (seperti grade), buat table threshold dan pakai `LOOKUP`: ``` =LOOKUP(B2, {0,55,70,85}, {"D","C","B","A"}) ```
Ini elegant dan scalable. --- ## 11. Penanganan error dan sanitize input
Gunakan `IFERROR` atau `IFNA` supaya sheet tetap rapi: ``` =IFERROR( formula_nested_if , "Cek Input") ```
Pastikan nilai numerik benar: ``` =IF(NOT(ISNUMBER(B2)),"Input salah", ... ) ```
Jika data berasal dari form/CSV, selalu `TRIM` dan `VALUE`: ``` =IFERROR(VALUE(TRIM(A2)), 0) ``` --- ## 12. Praktik: Bikin rule promosi kompleks (stap by step)
Skenario toko online: * Jika member VIP dan belanja ≥ 1.000.000 → Diskon 20% * Jika member VIP dan belanja < 1.000.000 → Diskon 10% * Jika bukan VIP dan belanja ≥ 2.000.000 → Diskon 15% * Lainnya → Diskon 0%
Kolom: * A: Nama * B: Member (Yes/No) * C: Total
Rumus: ``` =IF(B2="Yes", IF(C2>=1000000, 0.20, 0.10), IF(C2>=2000000, 0.15, 0)) ```
Kalau mau output jumlah potongan: ``` =IF(B2="Yes", IF(C2>=1000000, C2*0.20, C2*0.10), IF(C2>=2000000, C2*0.15, 0)) ``` --- ## 13. Advanced: IF + ARRAYFORMULA / Spill formulas
Di Google Sheets, kalau kamu mau apply satu rumus ke seluruh kolom: ``` =ARRAYFORMULA( IF(LEN(B2:B), IF(B2:B>=85, "A", IF(B2:B>=70,"B","C")), "") ) ```
Di Excel 365, fungsi spill/dynamic array juga mendukung: ``` =IF(A2:A100>=85,"A",IF(A2:A100>=70,"B","C")) ```
Tapi hati-hati performance kalau dataset besar. --- ## 14. IF bertingkat dan performa (best practice) * Hindari nested IF sangat dalam (lebih dari 6-8 level) karena susah maintanance. * Gunakan helper columns, table mapping, atau IFS/SWITCH untuk readability. * Untuk dataset besar (>50k rows), prefer lookup ke table atau Power Query untuk transform batch. * Pakai nama range, sehingga rumus lebih mudah dibaca. --- ## 15. Debugging: kenapa IF-mu salah?
Beberapa penyebab umum: * Urutan kondisi salah → kondisi yang lebih umum ditempatkan dulu menghalangi kondisi spesifik. (Solusi: cek urutan dari paling ketat → paling longgar). * Tipe data mismatch → string vs number. Gunakan `VALUE()` atau `TRIM()`. * Kesalahan tanda baca (koma vs titik koma) sesuai regional Excel. * Kurung tutup kurang → periksa jumlah `)` di akhir. * Spasi tak terlihat → `TRIM` sebelum compare teks.
Praktik debugging: * Uji tiap kondisi sederhana di kolom terpisah (contoh: `=B2>=85`) * Gunakan kolom helper untuk hasil interim * Gunakan `EVALUATE`? (tidak tersedia) — jadi break formula. --- ## 16. Contoh kasus nyata & rumus lengkap (bisa langsung copy-paste) ### Contoh A: Sistem nilai plus predikat
Kolom B = Nilai (0–100). Kolom C = Predikat
Rumus: ``` =IF(B2>=85,"A", IF(B2>=70,"B", IF(B2>=55,"C", IF(B2>=40,"D","E")))) ``` ### Contoh B: Cek kelayakan kredit
Kriteria: * Penghasilan ≥ 10 juta AND usia antara 21–60 AND skor kredit ≥ 600 → Lolos * Jika salah satu tidak penuhi → Tidak Lolos
Rumus: ``` =IF(AND(C2>=10000000, D2>=21, D2<=60, E2>=600), "Lolos", "Tidak Lolos") ``` ### Contoh C: Label stok: “Restock”, “Cukup”, “Overstock”
Aturan: * stok ≤ 5 → Restock * stok 6–50 → Cukup * stok > 50 → Overstock
Rumus: ``` =IF(B2<=5,"Restock", IF(B2<=50,"Cukup","Overstock")) ``` ### Contoh D: Validasi nomor handphone & format ke +62
Jika nomor mulai dengan 0: ``` =IF(LEFT(TRIM(A2),1)="0", "+62"&RIGHT(TRIM(A2), LEN(TRIM(A2))-1), TRIM(A2)) ```
Tambahkan `SUBSTITUTE` untuk hapus spasi dan simbol: ``` =IF(LEFT(REGEXREPLACE(A2,"[^0-9]",""),1)="0", "+62"&RIGHT(REGEXREPLACE(A2,"[^0-9]",""), LEN(REGEXREPLACE(A2,"[^0-9]",""))-1), REGEXREPLACE(A2,"[^0-9]","")) ```
(Catatan: `REGEXREPLACE` di Google Sheets; di Excel pakai nested `SUBSTITUTE` atau Power Query.) --- ## 17. Alternatif untuk kondisi banyak: gunakan table + LOOKUP
Untuk mapping range ke label (grade atau kategori), lebih elegan pakai `LOOKUP`:
Contoh grade:
Buat array threshold `{0,55,70,85}` dan labels `{"D","C","B","A"}`: ``` =LOOKUP(B2, {0,55,70,85}, {"D","C","B","A"}) ```
Ini lebih ringkas dan mudah diubah.
Excel: juga bisa pakai `VLOOKUP` dengan kolom `min_threshold` dan `label`, lalu `VLOOKUP( B2, table, 2, TRUE )`. --- ## 18. Latihan (soal + solusi) — latihan biar nempel ### Soal 1:
Data: Nilai Siswa (B2). Aturan: * ≥90 A+ * 80–89 A * 70–79 B * 60–69 C * <60 F
Buat rumus IF bertingkat.
Solusi: ``` =IF(B2>=90,"A+",IF(B2>=80,"A",IF(B2>=70,"B",IF(B2>=60,"C","F")))) ``` ### Soal 2:
Data: Harga (B2). Diskon: * Jika member = "Gold" → 20% * Jika "Silver" → 10% * Jika "Bronze" → 5% * Else → 0%
Solusi: ``` =IF(A2="Gold", B2*0.20, IF(A2="Silver", B2*0.10, IF(A2="Bronze", B2*0.05, 0))) ``` --- ## 19. Cheat sheet pola IF (siap copy-paste) * Basic: ``` =IF(test, value_if_true, value_if_false) ``` * IF bertingkat 3-level: ``` =IF(cond1, res1, IF(cond2, res2, IF(cond3, res3, res4))) ``` * IF + AND: ``` =IF(AND(cond1, cond2), res_true, res_false) ``` * IF + OR: ``` =IF(OR(cond1, cond2), res_true, res_false) ``` * IF + ISNUMBER: ``` =IF(ISNUMBER(A2), "Angka", "Bukan Angka") ``` * IF + ISBLANK: ``` =IF(ISBLANK(A2),"Kosong","Isi") ``` --- ## 20. Catatan untuk Excel vs Google Sheets * Sintaks sama, tapi beberapa helper functions berbeda: `REGEXREPLACE` di Sheets; Excel modern (365) mulai support beberapa fungsi regex via `TEXTSPLIT` dll, tapi versi lama tidak. * Gunakan `LET` di Excel 365 untuk readability: ``` =LET(val,B2, IF(val>=85,"A",IF(val>=70,"B","C"))) ``` * Di Google Sheets, gunakan `ARRAYFORMULA` untuk apply ke seluruh kolom. --- ## 21. Penutup & motivasi praktik
IF bertingkat memang sering jadi “kebanggaan” spreadsheeter pemula: rumusnya fleksibel dan bisa menangani berbagai kasus logika. Tapi hati-hati — kalau dipakai tanpa strategi, rumusmu bisa jadi susah dibaca dan sulit maintain. Jadi aturan mainnya: * Tulis logika dulu di kata (flowchart sederhana). * Gunakan kolom bantu supaya mudah debug. * Pakai IFS / SWITCH / LOOKUP kalau kondisi banyak. * Selalu sanitize input (TRIM, VALUE, ISNUMBER). * Test rumus dengan beberapa contoh edge-case.
Sekarang waktunya praktik. Pilih satu kasus nyata dari pekerjaan sekolah atau jualanmu — misal grade, komisi, atau validasi — lalu bangun rumus IF bertingkat sesuai panduan di atas.
Mulai dari versi sederhana, lalu tambah kompleksitas.
Ntar kalau butuh, kamu bisa ubah ke IFS/LOOKUP biar lebih rapi.
Selamat ngoprek rumus — kalo kamu praktek terus, dalam waktu singkat kamu bakal bilang: “IF sih gampang, yang susah itu bikin logic-nya rapi.” Semangat!
Gabung dalam percakapan