Analisis Data

Cara Memperbaiki Error #SPILL di Excel

ModelMonkey27 April 20269 menit baca

Dalam model laporan tiga kolom yang mencakup 8 tab, satu spill range yang terblokir akan berjenjang ke setiap tab yang merujuknya. Berikut adalah apa yang menyebabkan error ini dan cara memperbaiki setiap variannya. Dan jika Anda terutama bekerja di Google Sheets: masalah yang sama muncul dengan wajah yang berbeda. Bukan error yang terlihat, tetapi korusi data diam-diam โ€” yang jauh lebih berbahaya.

Mengapa Error #SPILL di Excel Merusak Model Multi-Tab

Spill range adalah blok sel yang ingin ditempati oleh formula dynamic array. =UNIQUE('P&L'!B:B) tidak menampilkan output ke satu sel โ€” formula ini berkembang ke bawah untuk mencakup setiap nilai unik yang ditemukan. Jika tab Asumsi Anda memiliki teks, hasil formula, atau bahkan spasi kosong dalam sel tujuan mana pun, seluruh formula akan menampilkan #SPILL! sebagai gantinya.

Masalah multi-tab mengikuti dari operator spill range. =SUMIFS('P&L'!C:C, 'P&L'!B:B, Assumptions!A2#) berarti "gunakan setiap sel dalam spill range mulai dari A2, berapa pun ukurannya." Ini sangat powerful ketika berfungsi dengan baik. Ketika A2 menampilkan #SPILL!, setiap formula hilir yang merujuk ke A2# langsung mewarisi error tersebut sepenuhnya. Item baris NPV Anda sebesar Rp 183 miliar menjadi error sebelum Anda menyentuh tab Returns.

5 Penyebab Error #SPILL di Excel

Klik sel yang menampilkan #SPILL! dan lihat border garis putus-putus biru โ€” ini menunjukkan rentang yang ingin ditempati Excel. Sel yang tidak kosong apa pun di dalam border tersebut memblokir spill range.

1. Sel Tidak Kosong dalam Spill Range

Penyebab paling umum, dan paling sulit untuk diperbaiki secara permanen. Anda menghapus sel yang menurut Anda memblokir, formula menyelesaikan, lalu rusak lagi pada perhitungan ulang berikutnya. Sel yang memblokir tersebut mungkin diberi nilai oleh formula dari tab lain โ€” ='Headcount'!D47 menarik nilai ke zona spill Anda akan mengisi ulang sel setiap kali sheet diperhitungkan ulang.

Perbaikan: Cari formula sumber yang memberi nilai ke sel pemblokir dan alihkan rute, atau pindahkan formula spill Anda ke rentang yang benar-benar kosong.

2. Formula di Dalam Tabel Excel

Seperti yang dinyatakan dalam halaman dukungan resmi Microsoft "How to correct a #SPILL! error" (support.microsoft.com, diverifikasi 27 April 2026): "Formula dynamic array tidak didukung di dalam tabel Excel." Tabel menggunakan referensi terstruktur, yang tidak kompatibel dengan model spill pada tingkat fundamental.

Perbaikan: Pindahkan formula di luar tabel, atau konversi tabel ke rentang biasa melalui Table Design โ†’ Convert to Range.

3. Array Volatil Terlalu Besar untuk Ruang Tersedia

Formula Anda mencoba untuk spill 47 baris data headcount Engineering dari tab Headcount tetapi menabrak anchor named range atau blok input statis 30 baris ke bawah. Excel tidak akan melakukan partial spill โ€” formula akan menampilkan error pada keseluruhan formula.

Perbaikan: Bebaskan baris di bawah, atau gunakan INDEX untuk membatasi output: =INDEX(UNIQUE('Headcount'!B$2:B$500), SEQUENCE(30)).

4. Spill Range Meluas Melampaui Batas Worksheet

Terjadi dengan formula yang menghitung output lebih besar dari grid sheet. Batas maksimal Excel adalah 1.048.576 baris ร— 16.384 kolom per sheet. Coba untuk spill melampaui baris 1.048.576 dan Anda akan mendapat #SPILL! apa pun yang ada di bawahnya.

Perbaikan: Batasi output dengan =TAKE(formula, n) atau batasi urutan: =SEQUENCE(MIN(ROWS('P&L'!B:B), 1000)).

5. Spill Range Berisi Sel yang Digabung

Sel yang digabung memblokir spill ranges persis seperti data, dan mudah terlewatkan karena terlihat kosong. Untuk mengkonfirmasi: pilih zone spill berborder biru, kemudian Home โ†’ Find & Select โ†’ Go To Special โ†’ Blanks. Jika tidak memilih setiap sel dalam rentang, maka sel yang digabung adalah penyebabnya.

Perbaikan: Batalkan penggabungan semuanya di area spill yang dituju (Home โ†’ Merge & Center โ†’ Unmerge Cells).

Bagaimana Error #SPILL di Excel Berjenjang di Model Multi-Tab

=SUM(Assumptions!A2#) berarti menjumlahkan seluruh spill range, berapa pun ukurannya. Ini sangat powerful ketika berfungsi, dan itulah mengapa error menyebar langsung dan sepenuhnya ketika tidak berfungsi.

Dalam LBO 6+ tab โ€” Assumptions, P&L, Balance Sheet, Cash Flow, FCFF, Returns โ€” satu formula yang terblokir di Assumptions dapat menyentuh setiap tab sebelum Anda scroll sekali. Urutan perbaikan sangat penting: selesaikan sel pemblokir akar terlebih dahulu, lalu paksa perhitungan ulang (Ctrl+Alt+F9 di Windows), kemudian verifikasi setiap tab hilir secara berurutan. Memperbaiki tab di luar urutan hanya akan memindahkan error.

Skenario terburuk adalah sel pemblokir yang berisi data yang Anda benar-benar butuhkan. Dalam hal ini, formula spill harus pindah, bukan datanya.

Excel vs. Google Sheets: Bagaimana Masing-Masing Menangani Perilaku Spill

FiturExcel (Microsoft 365)Google Sheets
Dynamic arrays diluncurkan2019 (channel saat ini)Native sejak peluncuran
Error pada rentang terblokir#SPILL! (terlihat)Overwrite diam-diam
Operator spill rangeA2#Tidak berlaku
Kompatibilitas tabelTidak kompatibel dengan dynamic arraysARRAYFORMULA bekerja di tabel
Alat bantuan debug visualBorder garis putus-putus biru di sekitar spill zoneTidak ada indikator
Kaskade multi-tabLangsung, terlihatLangsung, diam-diam

Masalah Overwrite Diam-diam di Google Sheets

Google Sheets tidak memiliki error #SPILL. ARRAYFORMULA hanya menimpa apa pun yang ada di jalurnya. Jika =ARRAYFORMULA(SUMIFS('P&L'!C$2:C$500, 'P&L'!B$2:B$500, Assumptions!A2:A50)) memutuskan memerlukan lebih banyak baris daripada yang Anda antisipasi, formula ini akan menimpa data yang ada di bawahnya tanpa peringatan apa pun. Tidak ada error, tidak ada konflik, tidak ada border biru.

Menurut halaman referensi fungsi Google Workspace "ARRAYFORMULA" (support.google.com/docs, versi editor Sheets per April 2026): fungsi tersebut "memungkinkan tampilan nilai yang dikembalikan dari formula larik ke dalam beberapa baris dan/atau kolom." Yang tidak disoroti oleh dokumentasi resmi adalah bahwa formula akan diam-diam menimpa data yang ada dalam rentang tujuan tanpa prompt konflik. Jika Anda menyerahkan board pack kepada investor di mana ARRAYFORMULA telah diam-diam menelan asumsi nilai terminal yang dikodekan keras di baris 38, angka-angka tersebut terlihat bagus sampai seseorang melakukan validasi silang sumber โ€” dan pada saat itu Anda sudah mendistribusikan deck.

Ini adalah mode kegagalan yang lebih berbahaya daripada #SPILL!, tepatnya karena tidak mengumumkan dirinya.

Cara Mengaudit Apakah ARRAYFORMULA Telah Menimpa Data Nyata di Google Sheets

Jika Anda menjalankan model multi-tab di Sheets dan sesuatu tampak aneh, berikut cara memverifikasi apakah formula larik telah menimpa input statis.

Langkah 1: Petakan setiap ARRAYFORMULA dalam workbook.

Tidak ada alat audit bawaan. Gunakan Edit โ†’ Find (Ctrl+H), cari ARRAYFORMULA, centang "Search all sheets." Catat setiap sel yang berisi satu, arah spillnya, dan jumlah baris output yang diharapkan.

Langkah 2: Periksa tabrakan antara output formula dan sel statis.

Untuk setiap ARRAYFORMULA, verifikasi jumlah baris cocok dengan ekspektasi. Jika formula Anda di Assumptions!A2 menarik 47 baris headcount dari tab P&L, periksa apakah Assumptions!A49, A50, A51 berisi apa yang Anda letakkan di sana. Jika A50 memiliki nilai yang seharusnya tidak ada, formula berkembang dan menimpanya dalam run sebelumnya โ€” atau sesuatu lain menulis di sana dan formula sejak itu menyusut, meninggalkan data yatim piatu.

Pemeriksaan hitungan cepat:

=COUNTA(Assumptions!A2:A60)

Bandingkan angka itu dengan jumlah baris yang Anda harapkan dari sumber. Ketidaksesuaian adalah bendera tabrakan.

Langkah 3: Bekukan dan diff sebelum setiap pembaruan model.

Audit paling andal untuk board pack triwulanan: ambil snapshot rentang output sebelum menyegarkan. Gunakan tab Snapshot khusus:

='Assumptions'!A2:A50

Setelah ARRAYFORMULA menyegarkan, diff sebelum/sesudah dengan:

=ARRAYFORMULA(IF('Assumptions'!A2:A50 <> Snapshot!A2:A50, "CHANGED", ""))

Bendera CHANGED apa pun pada sel yang seharusnya input statis adalah tabrakan. Ini adalah logika yang sama yang akan Anda gunakan untuk menangkap mutasi ketergantungan sirkular โ€” Anda mendeteksi penulisan tak terduga.

Langkah 4: Batasi setiap ARRAYFORMULA ke rentang eksplisit.

Jangan pernah gunakan referensi kolom open-ended seperti A:A di dalam ARRAYFORMULA dalam model produksi. Batasi setiap formula ke jumlah baris eksplisit yang cocok dengan output maksimal yang Anda harapkan:

=ARRAYFORMULA(IFERROR(
  SUMIFS('P&L'!C$2:C$500, 'P&L'!B$2:B$500, Assumptions!A2:A50),
  0
))

Ini mengunci spill ke tepat 49 baris dan mengembalikan 0 untuk segmen yang tidak cocok. Ini tidak akan mencegah overwrite di bawah baris 50, tetapi membuat output deterministik dan dapat diaudit di seluruh refresh.

Langkah 5: Lindungi sel input statis.

Asumsi yang dikodekan keras apa pun yang bisa dijangkau ARRAYFORMULA harus dilindungi secara eksplisit: Data โ†’ Protect sheets and ranges โ†’ batasi untuk diri sendiri. Jika formula berkembang ke rentang itu, formula akan melempar error izin sebagai gantinya daripada diam-diam menimpa. Ini adalah cara Anda membuat setara Sheets dengan konflik #SPILL! yang terlihat di Excel โ€” Anda memaksa tabrakan menjadi bising.

Untuk model yang mendekati plafon praktis Sheets sekitar 10 juta sel total, langkah-langkah ini harus ada dalam daftar periksa pra-pengiriman, bukan post-mortem.

ModelMonkey dapat memindai zone output ARRAYFORMULA Anda terhadap rentang input yang dilindungi dan statis, menandai tabrakan potensial sebelum pembaruan model. Berguna ketika geometri spill bergeser antar kuartal โ€” yang akan terjadi setiap kali rollup headcount atau daftar SKU Anda berubah panjang.

FAQ: Error #SPILL di Excel

Apa yang menyebabkan error #SPILL di Excel? Error #SPILL terjadi ketika formula dynamic array tidak dapat menampilkan seluruh outputnya karena ada sel yang terisi โ€” berupa data, formula, spasi tersembunyi, atau sel yang digabung โ€” di dalam rentang yang perlu ditempatinya. Excel tidak melakukan partial spill: seluruh formula gagal sekaligus.

Bagaimana cara cepat menemukan sel yang memblokir spill range? Klik sel yang menampilkan #SPILL!. Excel akan menggambar border garis putus-putus biru di sekitar rentang yang ingin ditempati formula. Sel apa pun di dalam border tersebut yang tidak kosong adalah pemblokir. Untuk sel yang digabung, gunakan Home โ†’ Find & Select โ†’ Go To Special โ†’ Blanks untuk mengkonfirmasi.

Apakah error #SPILL muncul di Google Sheets? Tidak. Google Sheets tidak menampilkan error #SPILL. Sebagai gantinya, ARRAYFORMULA diam-diam menimpa data yang sudah ada di jalurnya tanpa peringatan. Ini lebih berbahaya karena tidak terdeteksi โ€” model terlihat berfungsi normal padahal data input sudah tertimpa.

Mengapa error #SPILL menyebar ke seluruh tab dalam model multi-tab? Karena operator spill range A2# membaca seluruh output dinamis dari sel A2. Ketika A2 menampilkan #SPILL!, semua formula yang merujuk ke A2# di tab lain juga mewarisi error tersebut secara langsung. Perbaiki sel pemblokir akar terlebih dahulu, baru lakukan perhitungan ulang (Ctrl+Alt+F9), kemudian verifikasi tab hilir secara berurutan.

Bisakah formula dynamic array digunakan di dalam tabel Excel? Tidak. Microsoft secara eksplisit menyatakan bahwa formula dynamic array tidak kompatibel dengan tabel Excel (struktur dengan referensi terstruktur). Solusinya adalah memindahkan formula ke luar tabel, atau mengonversi tabel ke rentang biasa melalui Table Design โ†’ Convert to Range.

Bagaimana cara mencegah ARRAYFORMULA menimpa data di Google Sheets? Gunakan tiga langkah bersamaan: (1) batasi formula ke rentang baris eksplisit, bukan referensi kolom open-ended seperti A:A; (2) lindungi sel input statis via Data โ†’ Protect sheets and ranges; (3) buat tab Snapshot dan jalankan diff sebelum setiap refresh model untuk mendeteksi perubahan tak terduga.