Trik Membuat Rumus Bersarang Super Efektif
Mau bikin spreadsheet yang pinter ngebaca data sendiri? Rumus bersarang (nested formulas) itu senjata rahasia.
Dengan teknik yang tepat, kamu bisa bikin satu sel yang nge-handle banyak logika — misalnya nge-grade nilai, ngecek stok, ngehitung diskon, atau ngeambil data kondisional tanpa perlu kolom bantu yang berantakan.
Artikel ini bakal nge-bongkar semua trik: dari konsep dasar, banyak contoh nyata (tabel + rumus siap pakai), cara debugging, sampai best practice supaya rumusmu rapi dan nggak bikin file lemot.
Bahasa santai, cocok buat anak remaja yang pengen cepat paham — langsung praktek ya!
Daftar isi singkat
1. Apa itu rumus bersarang?
2. Kapan pakai rumus bersarang vs helper column
3. Aturan dasar & tips penulisan (parentheses, $)
4. Contoh lengkap: IF bersarang vs IFS
5. Gabungan IF + AND + OR (kasus nyata)
6. Lookup bersarang: VLOOKUP / XLOOKUP + IFERROR / INDEX+MATCH
7. SUMPRODUCT & SUMIFS di dalam rumus bersarang
8. Manipulasi teks pakai nested functions (LEFT, MID, TEXTJOIN)
9. Hitungan tanggal bersarang (EOMONTH, DATEDIF, NETWORKDAYS)
10. Dynamic arrays + nested (FILTER, UNIQUE, SORT)
11. LET & LAMBDA: ubah rumus kompleks jadi rapi
12. Debugging rumus bersarang (step-by-step)
13. Performance & maintenance (jangan lemot!)
14. Contoh praktis buat anak sekolah / UKM
15. Latihan & jawaban lengkap
16. Cheat sheet pola rumus bersarang
17. Penutup dan tantangan praktis
1. Apa itu rumus bersarang?
Rumus bersarang itu rumus yang mengandung fungsi lain di dalamnya. Contoh sederhana:
excel =IF(A2>80, "A", IF(A2>70, "B", "C"))
Di atas, `IF` pertama berisi `IF` kedua — itu contoh nested IF. Prinsipnya: satu fungsi menjadi argumen fungsi lain.
Kenapa keren? Karena kamu bisa memadatkan logika berlapis dalam satu sel tanpa kolom bantu. Tapi hati-hati: kalau berantakan, susah dibaca dan susah di-maintain.
2. Kapan harus pakai rumus bersarang vs helper column?
Pakai rumus bersarang kalau:
Logika relatif singkat dan bisa dimengerti dalam satu tempat.
Hasil final sederhana (grade, label, flag).
Kamu butuh satu output khusus per baris.
Gunakan helper column (kolom bantu) jika:
Rumus sangat panjang atau berlapis (>3 tingkat IF).
Data besar (ribuan baris) — performance penting.
Kamu butuh reuse nilai tengah (mis. intermediate rate) di beberapa rumus.
Kamu mau debugging mudah (pecah jadi potongan).
Contoh: kalkulasi rumit multi-step (diskon berdasarkan tier + promo + kupon) lebih baik dipisah jadi kolom `BasePrice`, `PromoDiscount`, `Coupon`, `FinalPrice`.
3. Aturan dasar & tips penulisan
Sebelum nyemplung, pahami aturan kecil ini supaya rumus bersarang nggak bikin pusing.
3.1 Parentheses (kurung)
Kurung menentukan urutan evaluasi. Pastikan jumlah buka `(` sama dengan tutup `)`. Cara mudah: tulis rumus bertahap, test bagian per bagian.
3.2 Absolute vs Relative ($)
Gunakan `$` untuk mengunci kolom/ baris pada referensi saat copy formula. Contoh:
`A$1` kunci baris 1,
`$A1` kunci kolom A,
`$A$1` kunci sel A1.
Kalau kamu refer ke range lookup (mis. table produk), gunakan absolute agar saat drag tetap rujuk range yg benar.
3.3 Pemisah argumen
Bergantung locale Excel/Sheets, pemisah argumen bisa `,` atau `;`. Di tutorial ini aku pakai `,` (paling umum), tapi kalau kamu pakai semicolon di komputer, tinggal ganti.
3.4 Baca dari dalam ke luar
Saat nyusun nested, tulis bagian terdalam dulu, test, lalu bungkus dengan fungsi luar. Ini bikin debugging lebih gampang.
4. Contoh 1 — IF bersarang vs IFS (kasus grading)
Kita mulai dari contoh klasik: mengubah nilai numerik jadi huruf.
Tabel contoh:
Siswa | Nilai |
---|---|
Ani | 92 |
Budi | 76 |
Cici | 58 |
Dedi | 84 |
Tujuan:
90–100 → A
80–89 → B
70–79 → C
<70 → D
4.1 Versi IF bersarang (Excel & Sheets)
Masukin di C2:
excel =IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","D")))
Keterangan: baca dari kiri ke kanan; kalau `B2>=90` true → "A", else lanjut ke IF berikutnya.
4.2 Versi IFS (lebih rapi, Excel modern / Google Sheets)
excel =IFS(B2>=90,"A", B2>=80,"B", B2>=70,"C", TRUE,"D")
`IFS` mengecek pasangan kondisi-nilai berurut. `TRUE,"D"` artinya default jika semua kondisi sebelumnya false.
4.3 Kenapa IFS sering lebih baik?
Lebih cepat dibaca.
Tidak perlu banyak tanda `)` di akhir.
Namun IFS tidak tersedia di Excel pra-2019; kalau share file ke teman pakai versi lama, hati-hati.
5. Contoh 2 — IF + AND + OR (kasus promo & syarat)
Kamu punya toko online. Syarat diskon:
Jika region = "JKT" dan total ≥ 200000 → diskon 10%
Jika region = "BDG" atau qty ≥ 10 → diskon 5%
Else → diskon 0%
Tabel contoh:
OrderID | Region | Qty | Total |
---|---|---|---|
1001 | JKT | 2 | 210000 |
1002 | BDG | 1 | 150000 |
1003 | SBY | 12 | 90000 |
1004 | JKT | 5 | 180000 |
Rumus di kolom Diskon (%):
excel =IF(AND(B2="JKT", D2>=200000), 0.10, IF(OR(B2="BDG", C2>=10), 0.05, 0))
Jelaskan tiap bagian:
`AND(B2="JKT", D2>=200000)` → cek dua syarat.
Kalau false → cek `OR(B2="BDG", C2>=10)`.
Else 0.
Tips: Kalau kondisi makin banyak, pertimbangkan tabel aturan (lookup) dan gunakan lookup + helper.
6. Contoh 3 — Lookup bersarang & penanganan error
Sering kita gabungin lookup dengan IFERROR agar hasil yang hilang nggak bikin `#N/A`.
6.1 VLOOKUP + IFERROR
Tabel `Products` (Sheet2):
Kode | Nama | Harga |
---|---|---|
P01 | Pensil | 3000 |
P02 | Buku | 5500 |
P03 | Pulpen | 2000 |
Di sheet utama, kita punya kode produk dan mau ambil nama & harga.
Rumus ambil nama:
excel =IFERROR(VLOOKUP(A2, Products!$A$2:$C$4, 2, FALSE), "Tidak ditemukan")
6.2 XLOOKUP (Excel modern) + IFERROR optional
excel =IFERROR(XLOOKUP(A2, Products!$A$2:$A$4, Products!$B$2:$B$4), "Tidak ditemukan")
XLOOKUP juga punya argumen `if_not_found`, jadi bisa lebih ringkas:
excel =XLOOKUP(A2, Products!$A$2:$A$4, Products!$B$2:$B$4, "Tidak ditemukan")
6.3 INDEX + MATCH nested for left-lookup
Kalau data kamu nggak bisa VLOOKUP karena lookup column berada di sebelah kanan:
excel =IFERROR(INDEX(Products!$B$2:$B$4, MATCH(A2, Products!$A$2:$A$4, 0)), "Tidak ditemukan")
Praktis: selalu bungkus lookup dengan `IFERROR` atau gunakan XLOOKUP dengan `if_not_found` untuk UX yang lebih aman.
7. Contoh 4 — SUMPRODUCT & kondisional kompleks (tanpa helper)
`SUMPRODUCT` sering dipakai untuk menghitung jumlah bersyarat multi-kriteria, dan bisa dikombinasi di dalam fungsi lain.
Kasus: total revenue produk tertentu di region tertentu dengan filter tanggal
Tabel transaksi our earlier (A:G). Hitung total `Total` untuk Produk = "Pensil" di JKT selama Februari 2025.
Rumus:
excel =SUMPRODUCT( (D2:D100="Pensil") * (C2:C100="JKT") * (TEXT(B2:B100,"yyyy-mm")="2025-02") * (G2:G100) )
Penjelasan:
Setiap pembanding menghasilkan array TRUE/FALSE, dikali → konversi ke 1/0.
Kalikan dengan `G` (Total) jadi tetap hanya menjumlahkan baris yang cocok.
Alternatif modern (Excel 365):
excel =SUM( FILTER(G2:G100, (D2:D100="Pensil") * (C2:C100="JKT") * (TEXT(B2:B100,"yyyy-mm")="2025-02") ) )
`FILTER` + `SUM` lebih readable.
Perhatian performa: SUMPRODUCT pada ribuan baris bisa berat — gunakan SUMIFS jika memungkinkan (SUMIFS lebih cepat tapi tidak mendukung array math langsung).
8. Contoh 5 — Manipulasi teks bersarang (gabung & ekstrak)
Sering kita perlu gabung beberapa kolom atau mengambil sebagian teks.
8.1 Gabung nama lengkap dari Nama Depan & Belakang
excel =TRIM(CONCATENATE(A2, " ", B2))
Lebih modern:
excel =TEXTJOIN(" ", TRUE, A2, B2)
8.2 Ekstrak domain email
Email: `ani@gmail.com` di A2. Ambil domain setelah `@`.
excel =RIGHT(A2, LEN(A2) - FIND("@", A2))
Penjelasan:
`FIND("@",A2)` menemukan posisi `@`.
Kurangi panjang total → ambil RIGHT.
8.3 Gabungan TRIM, PROPER, SUBSTITUTE untuk normalisasi
Kadang data berantakan (extra spaces, huruf kecil/besar campur).
excel =PROPER(TRIM(SUBSTITUTE(A2, " ", " ")))
`SUBSTITUTE` bisa digabung untuk beberapa pattern.
9. Contoh 6 — Hitungan tanggal bersarang (billing, due, age)
Tanggal sering butuh beberapa fungsi nested.
9.1 Hitung usia dari tanggal lahir
Tanggal lahir di B2. Usia:
excel =DATEDIF(B2, TODAY(), "Y")
Jika DATEDIF error di Excel, bisa alternatif:
excel =INT((TODAY()-B2)/365.25)
9.2 Hitung tanggal jatuh tempo + overdue flag
Order date di B2, terms 30 hari di C2 (angka). Jatuh tempo:
excel =B2 + C2
Flag overdue:
excel =IF(AND(TODAY() > (B2 + C2), Status <> "Paid"), "Overdue", "OK")
9.3 Next billing date: last billing jatuh setiap month-end
Kalau mau next billing = EOMONTH(last_billing, 1)
excel =EOMONTH(B2, 1)
Trik: gabungkan `TEXT` untuk tampilkan month-year:
excel =TEXT(EOMONTH(B2,0),"yyyy-mm")
10. Contoh 7 — Dynamic Arrays + Nested (FILTER, UNIQUE, SORT)
Excel modern & Google Sheets memungkinkan nesting fungsi dynamic array untuk ringkasan otomatis.
10.1 Daftar produk unik + total revenue (tanpa pivot)
excel =LET( prods, UNIQUE(D2:D100), revs, MAP(prods, LAMBDA(p, SUMIFS(G2:G100, D2:D100, p))), SORT(HSTACK(prods, revs), 2, -1) )
Kalau tidak ada LET/MAP/HSTACK, gunakan UNIQUE di satu kolom, lalu SUMIFS di kolom sebelah (drag).
10.2 Ambil top N produk dengan FILTER + SORT + TAKE
excel =TAKE(SORT(HSTACK(prods, revs), 2, -1), 5)
10.3 Google Sheets pake QUERY (alternatif)
sheets =QUERY(A1:G, "select D, sum(G) where G is not null group by D order by sum(G) desc limit 5", 1)
`QUERY` di Sheets gampang banget buat aggregasi.
11. LET & LAMBDA: ubah rumus bersarang jadi rapi & cepat
Rumus panjang sering berulang ngitung bagian yang sama. `LET` memungkinkan kamu menyimpan intermediate result. `LAMBDA` bisa bikin fungsi custom.
Contoh: ringkasan produk dengan LET (Excel 365)
excel =LET( r_data, D2:D100, r_total, G2:G100, prods, UNIQUE(r_data), totals, MAP(prods, LAMBDA(p, SUMIFS(r_total, r_data, p))), HSTACK(prods, totals) )
Kelebihan:
Lebih cepat karena Excel nggak hitung ulang `UNIQUE(D2:D100)` berkali-kali.
Lebih readable: bagi rumus jadi nama-nama logis.
`LAMBDA` bisa kamu simpan sebagai nama fungsi di Name Manager (Custom Function) lalu pakai dalam sheet seperti fungsi biasa.
12. Debugging rumus bersarang — step-by-step
Rumus panjang bikin error, jadi debugging itu skill wajib.
Langkah praktis:
1. Test bagian terdalam: copy bagian terdalam (mis. `FIND("@",A2)`), paste di sel terpisah, lihat hasil.
2. Gunakan Evaluate Formula (Excel): Formula → Evaluate Formula untuk step-by-step.
3. Gunakan helper cells: buat kolom sementara untuk setiap bagian rumus, test, lalu gabung kembali.
4. Tambahkan IFERROR sementara: bungkus bagian yang rawan error dengan `IFERROR(...,"ERR")` untuk melihat di mana error muncul.
5. Periksa tipe data: teks vs angka vs tanggal; gunakan `ISNUMBER`, `ISTEXT`, `ISDATE` (tidak universal) untuk cek.
6. Periksa cara copy: apakah ada `$` yang lupa? Apakah referensi terpecah?
7. Cek locale pemisah: koma vs titik koma.
Contoh debugging: rumus `=IF(RIGHT(A2,3)="com", "web", "not")` gagal karena ada spasi → ubah jadi `=IF(RIGHT(TRIM(A2),3)="com","web","not")`.
13. Performance & maintenance
Rumus bersarang berlapis bisa bikin file berat. Tips biar aman:
Gunakan helper column jika operasi per baris kompleks dan dataset besar.
Hindari fungsi volatile di banyak sel (`INDIRECT`, `OFFSET`, `NOW`, `RAND`).
Pakai LETuntuk menyimpan hasil yang dipakai berkali-kali.
Gunakan SUMIFS/COUNTIFS bila mungkin:lebih cepat daripada SUMPRODUCT banyak kali).
Power Query: transformasi berat (merge, group) lebih baik di Power Query lalu hasil dimuat ke sheet.
Simpan file sebelum eksperimen rumus berat.
14. Contoh praktis yang umum dipakai anak sekolah / UKM
Berikut beberapa template siap pakai — tinggal copy data dan rumus.
14.1 Laporan nilai siswa: grade + pass/fail + catatan
Tabel:
Nama | UTS | UAS | Nilai Akhir |
---|---|---|---|
Ani | 85 | 90 | =0.4*B2+0.6*C2 |
Grade (rumus IFS):
excel =IFS(D2>=90,"A", D2>=80,"B", D2>=70,"C", TRUE,"D")
Catatan (nested IF):
excel =IF(D2>=75,"Lulus", IF(D2>=60,"Remedial","Tidak Lulus"))
14.2 Inventory alert (restock logic)
Tabel:
Produk | Stok | Safety | LeadTime(hari) |
---|---|---|---|
Pensil | 4 | 10 | 7 |
Alert:
excel =IF(B2 < C2, "Restock", IF(B2 < C2 + 5, "Reorder Soon", "OK"))
14.3 Kasir / promo gabungan
Kalkulasi diskon gabungan:
Diskon dasar 10% jika total > 500000
Tambah diskon 5% jika pelanggan VIP
Maks diskon 20%
Rumus:
excel =LET( base, IF(D2>500000, 0.1, 0), vip, IF(E2="VIP", 0.05, 0), totaldisc, MIN(0.2, base + vip), totalpay, D2 * (1 - totaldisc), totalpay )
Hasil: `totalpay` dikembalikan.
15. Latihan dan jawaban (praktik penting!)
Coba dulu sebelum lihat jawaban. Bikin file baru dan pakai tabel contoh.
Latihan 1
Buat rumus satu sel yang menghasilkan:
"High" kalau score ≥ 85
"Medium" kalau 70–84
"Low" kalau <70
Gunakan IF bersarang.
Jawaban:
excel =IF(B2>=85,"High", IF(B2>=70,"Medium","Low"))
Latihan 2
Buat rumus untuk ambil domain email (contoh di atas) tapi hasil dengan `LOWER` (lowercase).
Jawaban:
excel =LOWER(RIGHT(TRIM(A2), LEN(TRIM(A2)) - FIND("@", TRIM(A2))))
Latihan 3
Dari tabel transaksi, hitung total `Total` untuk produk "Buku" di BDG selama 2025-03. Gunakan SUMPRODUCT.
Jawaban:
excel =SUMPRODUCT( (D2:D100="Buku") * (C2:C100="BDG") * (TEXT(B2:B100,"yyyy-mm")="2025-03") * (G2:G100) )
16. Cheat sheet pola rumus bersarang (ringkas)
IF bersarang: `IF(cond1, val1, IF(cond2, val2, val3))`
IF + AND: `IF(AND(cond1,cond2), valIfTrue, valIfFalse)`
IF + OR: `IF(OR(cond1,cond2), valIfTrue, valIfFalse)`
Lookup safe: `IFERROR(VLOOKUP(...), "not found")` atau `XLOOKUP(...,"not found")`
Aggregate filter: `SUM(FILTER(range, condition))`
Multi-condition sum: `SUMPRODUCT((A=Aval)*(B=Bval)*(C:C))`
Text extract domain: `RIGHT(A, LEN(A) - FIND("@",A))`
Date end-month: `EOMONTH(date, months)`
Use LET for readability/performance.
17. Kesalahan umum & cara menghindari
Terlalu banyak nested IF → gunakan IFS atau tabel lookup.
Lupa tanda `$` → referensi rusak ketika drag.
Lupa tangani #N/A → pakai IFERROR.
Pakai fungsi volatileterlalu banyak → file jadi lambat.
Fungsi tidak tersedia di versi lama → hindari fungsi modern kalau harus share ke pengguna lama.
18. Penutup + Tantangan Praktis
Rumus bersarang itu powerful, tapi kunci supaya efektif: rencanakan logika, tulis bagian terdalam dulu, dan pecah jika rumit. Sekarang tantangan buat kamu:
1. Ambil satu dataset (mis. transaksi bulan lalu).
2. Buat satu sel per baris yang: memberi label promo, menghitung diskon, dan menentukan apakah perlu restock berdasarkan stok + safety level — semua dalam satu rumus LET yang readable.
3. Share hasil ke teman atau gurumu — minta mereka review readability.
Kalau kamu ngerjain tantangan itu, tagih diri sendiri nilai A+ 🎯 — karena kemampuan merancang rumus bersarang itu tanda kamu udah mulai berpikir seperti data person!
Selamat ngoprek — semoga rumus-rumusnya bikin hidup di spreadsheet jadi lebih gampang dan keren.
Gabung dalam percakapan