Analisis Data

Error #SPILL! di Excel: Penyebab dan Cara Memperbaikinya

ModelMonkey20 Juni 20267 menit baca

Apa yang Berubah dengan Dynamic Arrays

Sebelum mesin dynamic array Microsoft 365 dirilis secara umum pada Januari 2020, formula Excel hanya mengembalikan satu nilai per sel. VLOOKUP menghasilkan satu hasil. SUMIFS menghasilkan satu angka. Setiap formula secara implisit terbatas pada selnya sendiri.

Dynamic arrays mengubah kontrak itu sepenuhnya. FILTER bisa mengembalikan 500 baris sekaligus. UNIQUE mengembalikan sejumlah nilai unik yang tidak bisa diprediksi sebelumnya. SEQUENCE menghasilkan sebuah grid. Excel membutuhkan blok sel kosong yang berurutan (disebut "spill range") untuk menampung semua hasil tersebut. Kalau tidak tersedia, yang muncul adalah #SPILL!.

Menurut artikel dukungan resmi Microsoft berjudul "Dynamic array formulas and spilled array behavior" (support.microsoft.com, ID artikel EA205C6B06): "A spill range is the range of cells that a dynamic array formula fills with its results." Jika ada sel mana pun dalam rentang tersebut yang berisi sesuatu, baik nilai, formula, karakter spasi, maupun sel yang digabung, formula akan langsung melempar #SPILL!.

5 Penyebab Error #SPILL! di Excel

Tabel berikut merangkum kelima penyebab, tingkat kemunculannya di lingkungan kerja nyata, dan langkah perbaikan cepatnya:

#PenyebabFrekuensiSolusi Cepat
1Data atau formula lain sudah ada di spill rangeSangat seringHapus isi sel yang memblokir
2Merged cells di dalam spill rangeSeringUnmerge semua sel di jalur spill range
3Formula berada di dalam Excel TableSedangConvert to Range, atau pindahkan formula ke luar Table
4Spill range melampaui batas sheet (baris ke-1.048.576 atau kolom XFD)JarangBatasi argumen formula, misalnya SEQUENCE(60)
5Konflik formula volatileSangat jarangTekan Ctrl+Alt+F9 untuk kalkulasi ulang penuh

Penyebab 1: Data atau Formula Lain Sudah Ada di Spill Range

Ini yang paling sering terjadi. Anda menaruh formula FILTER di D2, tapi ternyata D15 menyimpan angka hardcoded dari penutupan kuartal lalu. Excel tidak akan menimpanya.

Solusi: pilih sel formula, perhatikan border titik-titik biru yang menunjukkan spill range yang diinginkan, temukan sel yang terisi, lalu hapus isinya.

Penyebab 2: Merged Cells Ada di Spill Range

Template model keuangan sangat gemar menggunakan merged cells untuk header seksi. Formula SEQUENCE yang menghasilkan kolom 12 bulan akan langsung berhenti jika ada baris mana pun di kolom tersebut yang selnya digabung.

Solusi: pisahkan (unmerge) sel tersebut. Tidak ada jalan pintas di sini. Merged cells dan dynamic arrays pada dasarnya tidak bisa hidup berdampingan.

Penyebab 3: Formula Berada di Dalam Excel Table

Ini sering membuat orang terkejut. Excel Table tidak mengizinkan formula untuk menyebar ke luar batas Table. Formula UNIQUE di kolom H sebuah Table yang seharusnya mengembalikan 15 nilai, tapi Table-nya hanya punya 8 baris, akan langsung melempar #SPILL!.

Solusi: ubah Table kembali menjadi range biasa melalui Table Design, kemudian pilih Convert to Range, sebelum menggunakan formula yang bersifat spilling. Atau pindahkan formula ke luar Table.

Penyebab 4: Spill Range Terlalu Besar

=SEQUENCE(1048576) mencoba mengisi seluruh kolom. Excel menolaknya. Anda juga akan mengalami ini jika formula mencoba menyebar melewati kolom XFD atau baris ke-1.048.576.

Solusi: batasi formula. Jika Anda membuat deret tanggal untuk model 5 tahun, gunakan SEQUENCE(60), bukan SEQUENCE(ROWS(A:A)).

Penyebab 5: Konflik Formula Volatile

Ini lebih jarang terjadi. RAND() atau TODAY() di dalam formula array dinamis kadang-kadang bisa memicu konflik spill saat kalkulasi ulang. Artikel Microsoft yang sama menyebutnya sebagai kondisi "spill range isn't blank due to volatile recalculation dependencies." Biasanya bersifat sementara.

Solusi: tekan Ctrl+Alt+F9 untuk memaksa kalkulasi ulang secara penuh. Jika masalah berlanjut, ada kemungkinan volatilitas tersebut berinteraksi dengan sesuatu yang bersifat struktural di model Anda.

Cara Mendiagnosis #SPILL! dengan Cepat di Excel

Pilih sel yang menampilkan #SPILL!. Anda akan melihat dua hal: border titik-titik biru yang menunjukkan di mana Excel ingin menyebar, dan dropdown error dengan sub-alasan yang spesifik seperti "Spill range isn't blank" atau "Spill range has merged cells" dan sebagainya.

Sub-alasan tersebut langsung memetakan ke salah satu dari 5 penyebab di atas. Baca dulu sebelum Anda mulai mencari-cari sendiri.

Skenario FP&A yang Paling Sering Terdampak

Menarik line item variansi dengan FILTER

=FILTER('P&L'!B4:N50,'P&L'!B4:B50=Assumptions!$B$3,"No match")

Formula ini mendarat di tab analisis variansi dan menyebar ke bawah sesuai jumlah baris yang cocok dengan cost center yang dipilih. Jika seseorang menempel data aktual 30 baris di bawah formula saat Anda sedang bekerja di tab Assumptions, #SPILL! akan langsung muncul begitu sheet melakukan kalkulasi ulang.

Solusinya sederhana: berikan kolom khusus yang tidak berisi apa pun di bawahnya untuk setiap formula yang bersifat spilling. Kolom D untuk output FILTER, kolom E untuk kalkulasi pendukung, jangan pernah dicampur.

XLOOKUP di seluruh debt schedule

=XLOOKUP(B3,'Debt Schedule'!$A$4:$A$40,'Debt Schedule'!$D$4:$N$40,"Missing",0,1)

XLOOKUP yang mengembalikan seluruh baris amortisasi menyebar ke 11 kolom sekaligus. Jika ada sel mana pun di sebelah kanan yang berisi sesuatu, entah komentar lama, apostrof tersesat, atau formula yang mengembalikan "", maka #SPILL! langsung mematikan seluruh lookup. Inilah cara orang-orang menyadari bahwa satu sel yang hanya berisi karakter spasi bisa menumbangkan seluruh model.

UNIQUE untuk daftar cost center di model anggaran

=UNIQUE(FILTER('GL Export'!C:C,'GL Export'!A:A=Assumptions!$B$1))

Formula ini membangun daftar cost center dinamis yang otomatis diperbarui setiap kali data GL disegarkan. Jika template model memiliki teks "placeholder" beberapa baris di bawah lokasi formula ini, #SPILL! akan muncul setiap kali seseorang menempel data GL yang baru.

Solusinya: letakkan formula UNIQUE di seksi khusus dan dokumentasikan dengan jelas. Named range yang menunjuk ke output spill menggunakan sintaks =SpillStart# memungkinkan tab lain mereferensikannya dengan bersih tanpa perlu tahu berapa panjang daftarnya.

Operator @ Saat Anda Tidak Ingin Formula Menyebar

Jika #SPILL! muncul karena sebenarnya Anda hanya ingin formula mengembalikan hasil pertama saja, bukan seluruh array, tambahkan awalan @:

=@XLOOKUP(B3,'Debt Schedule'!$A$4:$A$40,'Debt Schedule'!$D$4:$D$40,"Missing")

Operator @ memaksa implicit intersection, yaitu perilaku yang sama dengan Excel sebelum 2020. Satu hasil per sel, tanpa spill. Ini yang Anda inginkan saat membangun kolom pendukung di mana setiap baris mencari nilainya sendiri.

Mereferensikan Output Spill dari Tab Lain

Setelah formula menyebar dengan benar, referensikan seluruh outputnya menggunakan operator #:

=SUMIFS('Returns Analysis'!E2#,'Returns Analysis'!D2#,">="&Assumptions!$B$5)

Tanda # setelah alamat sel memberitahu Excel: "ambil seluruh spill range dari formula ini." Jika spill range bertambah besar karena data yang mendasarinya berubah, setiap referensi yang menggunakan # akan ikut menyesuaikan. Tidak perlu lagi trik OFFSET, tidak perlu hardcode jumlah baris.

Per Juni 2026, operator referensi spill # bekerja di Excel untuk Microsoft 365 (berlangganan) dan Excel 2021 ke atas. Operator ini tidak bekerja di Excel 2019 atau versi yang lebih lama, yang memang tidak mendukung dynamic arrays sama sekali.

Audit Spill Range Lebih Cepat dengan Add-in

Error #SPILL! yang tersembunyi dalam model 12 tab bisa memakan waktu 20 menit hanya untuk dilacak, apalagi jika sel pemblokir berada 40 baris di bawah formula dan tidak terlihat jelas di layar. Add-in ModelMonkey dapat mengaudit spill range dari formula yang bermasalah dan langsung menunjuk sel mana yang menjadi penghalang, jauh lebih cepat daripada memindai secara manual sebuah kolom di GL export dengan 3.000 baris.

Coba gratis selama 14 hari - tersedia untuk Google Sheets maupun Excel.

Pertanyaan Umum