# Teknik Refactoring Kode untuk Rumus Spreadsheet Rapi

URL: https://formula.dog/id/journal/teknik-refactoring-kode-rumus-spreadsheet-rapi
Type: blog
Locale: id
Published: 2026-06-29
Updated: 2026-07-04

---

> Rumus spreadsheet yang berantakan bikin Anda lambat dan gampang error. Teknik refactoring kode ini membereskannya cepat, lengkap dengan contoh siap pakai.

Teknik refactoring kode juga berlaku untuk rumus spreadsheet: Anda merapikan struktur yang sudah bekerja tanpa mengubah hasilnya. Dalam konteks tabel kerja, itu berarti mengambil rumus yang sudah benar tapi terlihat seperti ditulis jam 11 malam menjelang deadline, lalu mengubahnya jadi sesuatu yang mau Anda buka lagi tiga bulan kemudian.

Biscuit sudah mengendus rumus itu lebih dulu buat Anda. Berikut yang benar-benar berdampak.

## Rumus Anda Sudah Jalan, jadi Kenapa Rasanya Berantakan?

Tanda klasik bahwa Anda perlu merapikan rumus: Anda membuka file yang ditulis enam bulan lalu, lalu menghabiskan tiga menit hanya untuk mengerti isi satu sel. Atau Anda menyalin rumus ke kolom baru dan tiba-tiba error, karena ada referensi baris yang di-hardcode di dalamnya.

Merapikan rumus tidak mengubah hasil akhirnya. Yang berubah adalah strukturnya, supaya hasilnya tetap benar saat kondisi di sekitarnya berubah: baris baru, kolom baru, sheet yang diganti nama.

Lewati langkah ini jika: file Anda cuma perhitungan sekali pakai yang tidak akan disentuh orang lain. Merapikan rumus ada biayanya (waktu, gangguan alur kerja), dan kalau manfaatnya nol, ROI-nya juga nol.

Layak dilakukan kalau: filenya dipakai banyak orang, Anda memperbaruinya rutin, atau rumus-rumusnya saling terhubung lintas sheet.

Beberapa tanda peringatan yang layak ditindaklanjuti:

- 
Rumus yang lebih lebar dari kolomnya pada zoom 100%

- 
Lebih dari dua tingkat IF bersarang

- 
Angka hardcode yang muncul di lebih dari tiga tempat

- 
Rekan kerja yang selalu bertanya isi sel itu apa, bukan membacanya sendiri

Satu saja dari tanda ini cukup jadi alasan untuk menjadwalkan sesi perapian rumus. Jangan tunggu sampai rumusnya benar-benar error di depan atasan. Lebih baik disisipkan lima belas menit di sela pekerjaan minggu ini, daripada dua jam panik saat laporan akhir bulan tiba-tiba tidak cocok.

![Tampilan dekat spreadsheet rapi dan terorganisir di layar laptop dengan sel berwarna](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/formula-dog/2026-06/2cc0d7-inline1.webp)

## Extract Method: Pecah Satu Rumus Jadi Beberapa Langkah Bernama

Ini teknik refactoring kode paling berguna, baik di pemrograman maupun di spreadsheet. Idenya: kalau satu rumus mengerjakan tiga hal sekaligus, pecah jadi tiga sel, masing-masing satu langkah, lalu gabungkan hasilnya.

Sebelum (satu sel mengerjakan semuanya):

`=IF(AND(A2<>"",DATEDIF(A2,TODAY(),"Y")>30),"Senior","Junior")`Sesudah:

- 
Sel `C2`: `=DATEDIF(A2,TODAY(),"Y")`, diberi nama "Usia dalam tahun"

- 
Sel `D2`: `=AND(A2<>"",C2>30)`, diberi nama "Apakah senior?"

- 
Sel `E2`: `=IF(D2,"Senior","Junior")`, hasil akhirnya

Begini hasilnya di sel yang sungguhan. Tiap langkah bisa dibaca sendiri-sendiri. Kalau batas usianya berubah dari 30 ke 25, Anda cukup ubah satu angka di satu sel. Kalau DATEDIF error karena tanggalnya kosong, Anda langsung tahu di mana masalahnya.

Trade-off-nya: Anda pakai lebih banyak kolom. Di spreadsheet yang sudah padat, itu bisa terasa boros. Gunakan area kolom bantuan di sheet terpisah kalau ruang kolom terbatas. Beri nama sheet itu "Helpers" atau "Kalkulasi" supaya strukturnya langsung jelas bagi siapa pun yang membuka file.

Berlaku sama di Excel dan Sheets, tidak ada batasan versi untuk memakai sel bantuan.

## Encapsulate Field: Lindungi Input yang Seharusnya Tidak Berubah

Dalam spreadsheet, encapsulation berarti menyimpan input tetap Anda, tarif, ambang batas, nilai referensi, di satu tempat, bukan tersebar sebagai angka hardcode di dalam rumus.

Ini formula yang sering dilupakan semua orang, padahal dicari semua orang juga.

Tarif PPN yang di-hardcode sebagai `0.11` di 47 rumus berbeda dalam satu workbook adalah jebakan pemeliharaan. Tarifnya berubah, Anda harus mencari ke-47 sel itu. Terlewat tiga saja, hasil perhitungan sudah salah.

Cara memperbaikinya:

- 
Buat sheet `Settings` dengan sel bernama `TarifPPN = 0.11`

- 
Rujuk nama itu di setiap rumus: `=B2*TarifPPN`

- 
Saat tarifnya berubah, Anda cukup ubah satu sel. Sisanya otomatis mengikuti.

Prinsip ini juga berlaku untuk referensi tanggal (tanggal hari ini sebagai jangkar tetap), pengali mata uang, dan ambang batas kategori. Kalau sebuah nilai muncul lebih dari dua kali dan berpotensi berubah, tempatnya adalah named range, bukan di dalam rumus.

Cara membuat named range:

- 
Excel: tab Formulas > Name Manager > New

- 
Google Sheets: Data > Named ranges

Konvensi penamaan itu penting. `TarifPPN` jelas. `TP` tidak. `tmp_3` juga tidak. Pakai nama yang bisa dimengerti dalam tiga detik oleh orang yang tidak menulis rumus itu.

![Analis profesional memeriksa lembar spreadsheet yang dicetak di atas meja dengan pena di tangan](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/formula-dog/2026-06/c48a77-inline2.webp)

## Hilangkan Duplikasi: Prinsip DRY untuk Rumus

Prinsip [DRY, Don't Repeat Yourself](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) adalah salah satu prinsip paling sering dikutip dalam rekayasa perangkat lunak, dan berlaku langsung untuk spreadsheet. Kalau Anda sudah menyalin VLOOKUP yang sama ke 15 kolom dengan sedikit variasi, Anda punya masalah pemeliharaan yang menunggu waktu untuk meledak.

Dua pendekatan tergantung situasi Anda:

Excel 365 / Google Sheets: pakai XLOOKUP atau INDEX-MATCH dengan ekspansi array untuk menarik beberapa kolom sekaligus dalam satu rumus.

`=XLOOKUP(A2,TabelLookup[ID],TabelLookup[[Nama]:[Status]])`Rumus ini mengembalikan Nama dan Status sekaligus, tanpa perlu salin-tempel antar kolom.

Excel lama (2016 ke bawah): buat satu panggilan MATCH di sel bantuan, lalu pakai INDEX yang merujuk posisi itu:

- 
`G2`: `=MATCH(A2,TabelLookup[ID],0)`, satu MATCH untuk semua kolom

- 
`H2`: `=INDEX(TabelLookup[Nama],G2)`

- 
`I2`: `=INDEX(TabelLookup[Status],G2)`

Anda tetap merujuk hasil MATCH yang sama di mana-mana. Kalau kolom lookup berubah, Anda cukup perbarui satu rumus.

Catatan versi yang perlu diingat: XLOOKUP hadir di Excel 2019 untuk pelanggan enterprise dan Excel 365. Kalau tim Anda masih pakai Excel 2016, pendekatan INDEX-MATCH adalah yang harus dipakai. Sheets mendukung XLOOKUP sejak 2022 di semua paket.

## Ganti Percabangan Bertingkat dengan Cara yang Lebih Bersih

IF bersarang adalah tempat rumus spreadsheet berubah jadi sulit dibaca. Tiga tingkat saja, kebanyakan pembaca sudah menyerah, termasuk Anda sendiri enam bulan kemudian.

Sebelum (rantai IF bersarang):

`=IF(A2>10000,"A",IF(A2>5000,"B",IF(A2>1000,"C","D")))`Opsi 1: IFS (Excel 2016+ / Sheets)

`=IFS(A2>10000,"A",A2>5000,"B",A2>1000,"C",TRUE,"D")`Lebih rata, tapi tetap empat kondisi dalam satu rumus. Masih bisa diterima.

Opsi 2: VLOOKUP dengan tabel referensi (pendekatan yang kurang dilirik)

Buat tabel referensi kecil:

- 
10001 ke atas: Kategori A

- 
5001 sampai 10000: Kategori B

- 
1001 sampai 5000: Kategori C

- 
0 sampai 1000: Kategori D

Lalu: `=VLOOKUP(A2,TabelAmbang,2,TRUE)`

TRUE (pencocokan mendekati) menyusuri tabel yang sudah diurutkan dan mengembalikan kategori terakhir yang sesuai. Logikanya sekarang ada di tabel, bukan terkubur di dalam rumus. Ambang batas berubah? Edit satu baris di tabel.

Layak untuk sedikit usaha ekstra: pendekatan tabel referensi, karena membuat logikanya bisa diaudit dan terlihat oleh siapa pun, bahkan orang yang tidak terbiasa membaca rumus.

Boleh dilewati kalau sedang buru-buru: IFS cukup baik untuk tiga kondisi atau kurang.

Fungsi SWITCH adalah opsi lain yang tersedia di Excel 2019+ dan Sheets, berguna saat Anda mencocokkan nilai persis, bukan rentang. Bacaannya lebih bersih dibanding IFS untuk kasus pencocokan persis.

## Algoritma Pengganti: Kapan Sebaiknya Menulis Ulang, Bukan Memperbaiki

Kadang rumusnya bukan salah, cuma pendekatannya yang keliru sejak awal. Anda mewarisi rumus 200 karakter yang menggabungkan teks pakai CONCATENATE dan simbol `&`, dan Anda perlu menambah satu kolom lagi. Langkah yang benar bukan memperpanjangnya. Langkah yang benar adalah menulis ulang pakai TEXTJOIN.

Sebelum:

`=A2&" | "&B2&" | "&C2&" | "&D2`Sesudah:

`=TEXTJOIN(" | ",TRUE,A2:D2)`Kalau tampilan tabel Anda berubah besok, rumus ini tetap mengikuti. TEXTJOIN menangani sel kosong, menangani array, dan tidak akan error saat Anda menambah kolom E.

Logika yang sama berlaku untuk:

- 
Mengganti VLOOKUP dengan XLOOKUP saat Anda butuh pencocokan persis plus penanganan nilai yang hilang

- 
Mengganti pembungkus IFERROR dengan penanganan error bawaan di fungsi yang lebih baru

- 
Mengganti rumus array lama (Ctrl+Shift+Enter) dengan dynamic array bawaan di Excel 365

Prinsip yang sama berlaku di skala lebih besar: kalau Anda mengurus pipeline data besar di dalam spreadsheet yang sudah jadi kusut karena referensi INDIRECT, koneksi eksternal, dan named range yang saling menunjuk, kadang langkah refactoring yang tepat adalah menarik logikanya keluar ke alat yang lebih pas (SQL, Python, Power Query) dan memakai spreadsheet hanya untuk tampilan. Itu keputusan yang lebih besar, tapi masuk kategori yang sama.

![Dua rekan kerja berdiskusi di depan whiteboard dengan diagram alur saat sesi tinjauan kode](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/formula-dog/2026-06/c94a4d-inline3.webp)

## Sebelum Mulai: Tiga Hal yang Harus Anda Siapkan Dulu

Teknik refactoring kode hanya berguna kalau Anda tidak merusak sesuatu yang tidak bisa dipulihkan. Dalam konteks spreadsheet, itu berarti:

- 
Salinan cadangan. Sebelum sesi merapikan rumus, simpan salinan workbook dengan tanggal. Bukan Save As ke folder yang sama, tapi ke lokasi terpisah (cloud backup, kirim ke email sendiri, apa saja). Anda akan berterima kasih pada diri sendiri di hari sesuatu berjalan salah.

- 
Tahu hasil yang seharusnya sekarang. Sebelum mengubah apa pun, catat angka-angka kuncinya: total, ringkasan, nilai sel penting. Bandingkan dengan sel yang sama setelah tiap perubahan. Pengecekan sepuluh detik yang langsung menangkap regresi.

- 
Satu perubahan setiap kali. Jangan sekaligus melakukan Extract Method, membuat tiga named range, dan meratakan IF bersarang dalam satu sesi. Kalau ada yang error, Anda perlu tahu perubahan mana penyebabnya. Kerjakan satu hal, verifikasi, baru lanjut ke berikutnya.

Ketiga langkah ini hanya butuh sekitar lima menit untuk disiapkan. Tapi sudah menyelamatkan jauh lebih dari lima menit di setiap sesi merapikan rumus yang kebetulan ada masalah tak terduga.

## Kapan Refactoring Tidak Pernah Selesai, dan Cara Menghentikannya

Risiko dari merapikan rumus adalah perfeksionisme. Anda bisa menghabiskan satu sore penuh menata ulang workbook yang sebenarnya sudah berfungsi, dan hasil akhirnya cuma sedikit lebih rapi dengan biaya setengah hari kerja.

Tentukan batas waktu sebelum mulai: 45 menit untuk sesi ini. Prioritaskan rumus yang benar-benar bermasalah, yang sering salah dibaca orang, yang error saat dipakai normal, yang menghalangi fitur baru yang perlu Anda tambahkan.

Sisanya: biarkan saja. Rumus yang jalan, yang tidak disentuh siapa pun, yang tidak pernah error setahun terakhir, itu sudah cukup baik. Cukup baik adalah titik berhenti yang sah.

Satu kerangka berpikir yang berguna: merapikan rumus bukan soal membuat workbook jadi sempurna. Ini soal membuat perubahan berikutnya jadi lebih mudah. Tanyakan pada diri sendiri sebelum tiap perubahan: apakah ini membuat langkah berikutnya lebih cepat atau lebih aman? Kalau ya, lakukan. Kalau tidak, berhenti.

Refactoring yang dilakukan dengan benar itu senyap. Tidak ada yang sadar. Itulah tujuannya. Rumus Anda tetap mengembalikan angka yang sama seperti kemarin, hanya saja kali ini Anda benar-benar paham kenapa angkanya begitu, dan orang berikutnya yang membuka file itu tidak perlu menebak-nebak lagi.

## FAQ

### Apa itu refactoring kode dalam konteks spreadsheet?

Refactoring kode di spreadsheet berarti merapikan struktur rumus dan tata letak workbook tanpa mengubah hasil perhitungannya. Tujuannya membuat rumus lebih mudah dibaca, diperbarui, dan dipakai ulang tanpa menyentuh hasil akhirnya.

### Kapan sebaiknya Anda merapikan rumus Excel atau Google Sheets?

Rapikan rumus saat sudah sulit dipahami waktu dibaca ulang, saat perubahan kecil bikin sesuatu error tanpa terduga, atau sebelum menambah fitur baru ke file yang sudah ada. Hindari merapikan file yang sudah jalan baik dan jarang disentuh.

### Apa itu teknik Extract Method untuk spreadsheet?

Extract Method berarti memecah satu rumus rumit jadi beberapa langkah yang tersebar di sel bantuan, masing-masing mengerjakan satu hal. Ini membuat tiap langkah bisa dibaca dan diuji sendiri-sendiri.

### Bagaimana cara menghilangkan rumus duplikat di Excel?

Pakai XLOOKUP dengan hasil multi-kolom (Excel 365 / Sheets) untuk menarik beberapa hasil dalam satu rumus, atau buat satu sel bantuan MATCH yang dirujuk semua rumus INDEX, jadi Anda hanya perlu memelihara satu lookup, bukan banyak.

### Apa itu teknik Replace Conditional?

Replace Conditional berarti mengganti rantai IF bersarang dengan alternatif yang lebih bersih: fungsi IFS untuk keterbacaan yang lebih rata, atau VLOOKUP pencocokan mendekati terhadap tabel referensi, supaya logikanya pindah dari dalam rumus ke tabel yang bisa diaudit.

### Apakah refactoring mengubah hasil yang dikembalikan rumus?

Tidak. Aturan inti refactoring adalah perilaku ke luar tetap identik. Yang berubah adalah strukturnya, bukan hasilnya. Kalau refactoring mengubah nilai keluaran, artinya ada yang salah di prosesnya.

### Bagaimana named range membantu refactoring kode di Excel?

Named range memberi label yang bermakna untuk nilai tetap seperti tarif pajak, jangkar tanggal, atau tabel lookup, lalu Anda merujuknya lewat nama, bukan angka hardcode. Saat nilainya berubah, Anda cukup perbarui satu tempat dan semua rumus ikut terbarui.