Menu

Error #SPILL! di Excel: Penyebab dan Cara Memperbaikinya

#SPILL! berarti rumus yang mengembalikan beberapa nilai tidak punya tempat untuk menaruhnya: ada sel di rentang spill-nya yang tidak kosong. Kosongkan sel yang menghalangi, maka hasilnya muncul.

Setiap lembar kerja di halaman ini interaktif: ubah angka atau rumus, dan hasilnya langsung dihitung ulang.

#SPILL! berarti sebuah rumus mengembalikan beberapa nilai (sebuah daftar atau tabel) dan Excel tidak punya tempat untuk menuliskannya: setidaknya satu sel di rentang yang dibutuhkan hasil itu tidak kosong. =UNIQUE(A2:A6) di bawah butuh tiga sel, C2 sampai C4, dan C4 berisi x. Hapus isi C4, maka daftarnya muncul.

UNIQUE terhalang sebuah nilai
C2
ABC
1ProductUnique list
2Apple#SPILL!
3Pear
4Applex
5Plum
6Pear
#SPILL! Hasilnya butuh lebih banyak sel daripada yang kosong. Kosongkan sel yang menghalanginya.

Klik C2: catatan di bawah kisi menjelaskan masalahnya. Lalu klik C4 dan tekan Delete. Ketiga produk spill ke C2:C4, dan sebuah garis tepi menandai rentang spill-nya. Ketik sesuatu di C3, maka errornya muncul lagi. Excel bekerja dengan cara yang sama: fungsi yang mengembalikan array, seperti FILTER, UNIQUE, SORT, SEQUENCE dan TEXTSPLIT, hanya berfungsi kalau seluruh rentang spill-nya kosong. Fungsi-fungsi ini butuh Excel 2021 atau versi lebih baru (TEXTSPLIT: Microsoft 365 atau Excel 2024); versi lama menampilkan #NAME? untuk fungsi-fungsi itu, jadi #SPILL! tidak pernah muncul di sana (lihat UNIQUE untuk fungsinya sendiri).

Cara mengatasi error #SPILL!

  1. Klik sel yang berisi #SPILL!. Di Excel, garis tepi putus-putus menunjukkan rentang yang ingin diisi hasilnya.
  2. Klik ikon peringatan di sebelah sel lalu pilih Select Obstructing Cells. Excel memilih setiap sel yang menghalangi.
  3. Tekan Delete, atau pindahkan sel-sel itu ke tempat lain (cut lalu paste).

Kalau sel yang menghalangi berisi data yang kamu butuhkan, pindahkan rumusnya: taruh di kolom atau baris yang semua sel di bawah dan di sebelahnya kosong.

#SPILL! padahal selnya terlihat kosong

Kasus yang paling membingungkan: rentang spill-nya terlihat kosong, tapi Excel tetap menampilkan #SPILL!. Sel yang berisi satu spasi, atau rumus yang mengembalikan string kosong "", tidak kosong, dan menghalangi spill sama seperti sebuah nilai.

Sel yang terlihat kosong tapi menghalangi
A2
ABC
1NumbersNumbers
2#SPILL!#SPILL!
3
4
#SPILL! Hasilnya butuh lebih banyak sel daripada yang kosong. Kosongkan sel yang menghalanginya.

A2 butuh A2:A4, dan A4 berisi spasi. C2 butuh C2:C3, dan C3 berisi ="". Klik A4 atau C3 untuk melihat isinya, hapus, maka angkanya spill. Di Excel, Select Obstructing Cells menemukan sel-sel ini bahkan ketika tidak ada yang terlihat di dalamnya. Teks putih di atas latar putih juga tersembunyi dengan cara yang sama.

#SPILL! ketika satu rumus spill ke rumus lain

Dua rumus yang spill bisa saling menghalangi, atau rumus yang diketik seseorang di bawahnya bisa berada di dalam rentang spill rumus di atasnya.

Dua rumus yang saling menghalangi
D2
ABCDE
1NameDeptITSales
2AnaIT#SPILL!Ben
3BenSalesDee
4CyIT5
5DeeSales
6EveIT
#SPILL! Hasilnya butuh lebih banyak sel daripada yang kosong. Kosongkan sel yang menghalanginya.

Daftar IT butuh tiga sel, D2:D4, dan D4 berisi rumus COUNTA. Daftar Sales di E2 punya dua sel yang dibutuhkannya, jadi berfungsi. Pindahkan rumus COUNTA ke D6 (atau sel mana pun di bawah daftar), maka nama-nama IT spill. Sisakan ruang agar daftar bisa bertambah: kalau nanti ada karyawan IT keempat, hasilnya butuh satu sel lagi.

#SPILL! dengan VLOOKUP dan satu kolom penuh

Penyebab umum di rumus yang ditulis untuk Excel versi lama adalah nilai yang dicari berupa satu kolom penuh:

=VLOOKUP(A:A,Prices!A:B,2,FALSE)      #SPILL!  (one result for every row of the sheet)
=VLOOKUP(A2,Prices!A:B,2,FALSE)       one result, fill it down
=VLOOKUP(A2:A100,Prices!A:B,2,FALSE)  100 results that spill
=VLOOKUP(@A:A,Prices!A:B,2,FALSE)     one result, the value on the formula's own row

A:A berisi 1.048.576 sel, jadi rumus pertama meminta 1.048.576 hasil, dan mulai dari baris 2 ke bawah barisnya tidak cukup: menu peringatannya mengatakan rentang spill melewati tepi worksheet. Pola ini berasal dari Excel versi lama, yang diam-diam hanya memakai nilai di baris rumus itu sendiri. Excel 365 mempertahankan perilaku itu di workbook lama dengan menampilkan rumusnya sebagai =VLOOKUP(@A:A,...), tapi rumus yang sama yang diketik baru akan spill satu kolom penuh. Hal yang sama terjadi pada =A:A*2 dan rumus lain yang menghitung satu kolom penuh. Pakai satu sel lalu salin ke bawah, rentang dengan ukuran sebenarnya, atau @. Penjelasan tentang lookup-nya sendiri ada di halaman VLOOKUP.

Satu hasil per baris, bukan spill

Rumus yang menghitung sebuah rentang juga akan spill. Sering kali itulah yang kamu inginkan, tapi kadang kamu ingin satu rumus per baris.

Satu rumus yang spill vs satu rumus per baris
C2
ABCD
1MonthSalesSpilled +10%Filled +10%
2Jan100110110
3Feb120132132
4Mar909999
5Apr140154154
Klik sel untuk melihat rumusnya. Ubah angka atau rumus, dan lembar kerja langsung menghitung ulang.

Kedua kolom menampilkan 110, 132, 99 dan 154. C2 berisi satu rumus, dan C3:C5 adalah hasil spill-nya: klik C3, maka catatan di bawah kisi mengatakan sel itu hasil spill dari C2. Ketik sesuatu di C4, maka C2 berubah menjadi #SPILL!. D2:D5 adalah empat rumus terpisah, jadi setiap sel bisa diubah sendiri-sendiri dan tidak ada yang bisa menghalanginya. Pakai bentuk kedua kalau orang akan mengetik di atas hasil satu per satu.

#SPILL! di tabel, dengan sel gabungan, atau dengan ukuran yang tidak diketahui

Penyebab-penyebab ini tergantung pada workbook-nya, bukan pada rumusnya:

  • Di dalam tabel Excel (Insert > Table): tabel tidak mendukung hasil spill, jadi FILTER atau UNIQUE di kolom tabel menampilkan #SPILL!. Taruh rumusnya di luar tabel, atau pilih tabelnya lalu pilih Table Design > Convert to Range.
  • Sel gabungan di rentang spill: pilih sel-sel itu lalu pilih Home > Merge & Center > Unmerge Cells, atau pindahkan rumusnya.
  • Spill range is unknown: ukuran hasilnya berubah setiap kali dihitung ulang, seperti =SEQUENCE(RANDBETWEEN(1,10)). Excel menolak menampilkan hasil spill yang ukurannya volatile. Berikan ukuran yang tetap.
  • Spill range is too big atau extends beyond the worksheet's edge: hasilnya akan melewati baris atau kolom terakhir. Out of memory: array-nya terlalu besar untuk dihitung. Untuk ketiganya, perkecil rentangnya, biasanya dari kolom penuh menjadi data yang sebenarnya.

Kembalikan satu nilai supaya tidak ada yang bisa menghalangi

Kalau kamu hanya butuh satu angka dari sebuah daftar, misalnya berapa banyak produk yang berbeda, bungkus fungsi yang spill dengan fungsi yang mengembalikan satu nilai. Satu nilai tidak pernah spill, jadi tidak ada sel yang bisa menghalanginya.

Berapa banyak produk yang berbeda
E2
ABCDE
1ProductDifferent products
2Apple
3Pear
4Applex
5Plum
6Pear
7Apple
Klik sel untuk melihat rumusnya. Ubah angka atau rumus, dan lembar kerja langsung menghitung ulang.

Giliranmu: E2 seharusnya menyebutkan berapa banyak produk berbeda di A2:A7. =UNIQUE(A2:A7) biasa akan spill ke x di E4. Tulis satu rumus di E2 yang mengembalikan jumlahnya.

COUNTA menghitung nilai yang dikembalikan UNIQUE dan memberi satu angka. Ide yang sama berlaku untuk =INDEX(SORT(A2:A7),1) untuk nilai pertama dari daftar terurut, =INDEX(FILTER(...),1) untuk hasil pertama yang cocok, atau =SUM(FILTER(...)) untuk sebuah total.

Pertanyaan yang sering diajukan

Apa arti #SPILL! di Excel?

Sebuah rumus mengembalikan lebih dari satu nilai (dynamic array) dan Excel tidak bisa menuliskannya ke sel di bawah atau di sebelahnya, karena setidaknya satu sel itu tidak kosong, digabung (merge), atau berada di dalam tabel. Kosongkan atau pindahkan yang menghalangi, maka hasilnya muncul.

Kenapa muncul #SPILL! padahal selnya terlihat kosong?

Sel yang terlihat kosong bisa saja berisi spasi, rumus yang mengembalikan "", atau teks berwarna putih. Semuanya menghalangi spill. Klik ikon peringatan di sebelah error itu lalu pilih Select Obstructing Cells, kemudian tekan Delete.

Bagaimana cara mengatasi #SPILL! pada VLOOKUP?

Nilai yang dicari berupa satu kolom penuh atau sebuah rentang, seperti =VLOOKUP(A:A,D:E,2,FALSE), jadi Excel mencoba mengembalikan satu hasil untuk setiap baris sheet. Pakai satu sel lalu salin ke bawah, =VLOOKUP(A2,D:E,2,FALSE), atau rentang dengan ukuran sebenarnya, =VLOOKUP(A2:A100,D:E,2,FALSE).

Bagaimana cara mencegah rumus spill di Excel?

Buat rumusnya mengembalikan satu nilai. Taruh @ di depan rentang untuk mengambil nilai di baris rumus itu saja (=@A2:A10*2), atau bungkus hasilnya dengan fungsi yang mengembalikan satu nilai, seperti =COUNTA(UNIQUE(A2:A10)) atau =INDEX(SORT(A2:A10),1).

Apakah rumus yang spill bisa ditaruh di dalam tabel Excel?

Tidak. Rumus yang spill menampilkan #SPILL! di dalam tabel. Taruh di sel di luar tabel, atau ubah tabelnya menjadi rentang biasa dengan Table Design > Convert to Range.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai