Excel #SPILL!은 수식 결과가 여러 셀로 퍼져야 하는데, 그 범위를 비울 수 없거나 계산할 배열 크기를 정하지 못할 때 표시됩니다. 오류 셀을 선택해 점선으로 표시된 분산 범위를 보고, 오류 아이콘에 방해 셀 선택(Select Obstructing Cells)이 있으면 막는 셀부터 찾으세요. 값이 있다면 삭제하기 전에 복사·이동합니다. 막힌 셀이 없다면 수식이 Excel 표 안에 있는지, 병합 셀·전체 열 참조·불안정한 배열 크기·메모리 문제가 있는지 순서대로 점검하세요.
1. #SPILL!은 여러 결과를 놓을 자리가 없다는 신호입니다
UNIQUE, FILTER, SORT, SEQUENCE처럼 한 수식으로 여러 값을 반환하는 동적 배열 수식은 첫 셀에만 입력하면 결과를 인접한 셀로 펼칩니다. 이 동작을 분산(spill)이라고 합니다. 예를 들어 D2의 수식 결과가 네 개면 D2:D5가 출력 범위입니다. Excel은 그 범위가 비어 있지 않거나, 표 안이거나, 시트 경계를 넘는 등 결과를 놓지 못하면 #SPILL!을 표시합니다. Microsoft는 오류 셀을 선택하면 의도한 영역에 점선 테두리가 나타난다고 안내합니다.
분산 범위의 첫 셀만 수식을 편집할 수 있습니다. 아래쪽 결과 셀은 독립적인 값처럼 보여도 수식이 만든 출력일 수 있습니다. 그 셀을 직접 고치려 하지 말고, 수식이 있는 왼쪽 위 셀을 선택해 결과 범위와 방해 요소를 먼저 확인하세요.
2. 합성 데이터로 막힌 분산 범위를 재현하세요
운영 파일을 바로 고치지 말고 빈 시트에 아래 가상 지점 이름을 입력합니다. 이 예시는 실제 고객·회사 정보를 사용하지 않습니다.
| 셀 | 값 | 셀 | 값·수식 |
|---|---|---|---|
| A2 | Gangnam | D2 | =UNIQUE(A2:A7) |
| A3 | Mapo | D3 | 비워 둠 |
| A4 | Gangnam | D4 | 메모: 보존할 내용 |
| A5 | Seongdong | D5 | 비워 둠 |
| A6 | Seocho | ||
| A7 | Mapo | ||
D2에 수식을 입력하면 고유값 네 개를 D2:D5에 반환해야 하지만, D4에 메모가 있어 #SPILL!이 발생합니다. D2를 선택해 점선 범위 D2:D5를 확인하고 오류 메뉴에서 방해 셀 선택을 누르면 D4가 지목됩니다. 메모가 필요하면 다른 안전한 칸으로 복사한 뒤 D4를 비우세요. 수식이 네 값을 모두 표시하는지 확인한 다음 D4에 옮겨 둔 메모가 남아 있는지도 검수합니다.
실제 파일에서는 먼저 보존하세요. Excel이 지목한 셀을 선택해 값을 다른 위치나 복사본으로 옮기고, 그 데이터가 수식 결과·메모·다른 부서 입력값 중 무엇인지 확인합니다. 분산 오류를 없애려고 행이나 열 전체를 삭제하면 연관 데이터까지 바뀔 수 있습니다.
3. 값이 없어 보이는데 막혀 있으면 수식 입력줄과 숨김 상태를 확인하세요
분산 범위 안의 셀에 값·공백 문자·수식이 남아 있으면 화면상 빈칸처럼 보여도 방해 요소가 될 수 있습니다. 특히 =""처럼 빈 문자열을 반환하는 수식이나 스페이스 문자는 셀 자체가 비어 있는 것과 다릅니다. 숨긴 행에 들어 있는 내용도 분산 대상 셀에 남아 있으면 먼저 확인해야 합니다.
- 오류가 난 수식 셀을 선택하고, 파란 점선 테두리가 어디까지 이어지는지 봅니다.
- 오류 아이콘의 방해 셀 선택 메뉴가 나오면 선택된 셀 주소와 수식 입력줄의 내용을 확인합니다. 메뉴가 없으면 점선 안의 값, 수식, 공백 문자, 숨긴 행을 직접 찾아봅니다.
- 해당 값이 필요한 메모나 입력값이면 복사본·다른 열로 옮기고 원래 주소를 기록합니다. 단순한 이전 임시값이라고 확인된 경우에만 셀 내용을 지웁니다.
- 분산 수식의 결과가 나타난 뒤 고유값 수, 첫 행과 마지막 행, 수식이 참조하는 원본을 확인합니다.
반복 작업으로 새 값이 출력 영역에 들어오는 구조라면 분산 출력용 열을 원본 입력 열과 분리하세요. 사람이 입력할 셀과 수식이 확장될 셀이 겹치지 않게 배치하면 새 행을 추가했을 때 오류를 줄일 수 있습니다. 기존 입력을 지우기 전에 각 셀의 데이터 소유자와 사용 목적을 확인해야 합니다.
4. 동적 배열 수식은 Excel 표 바깥의 빈 셀에서 시작하세요
동적 배열의 원본 범위를 Excel 표에서 읽는 것과 분산 수식을 표 안에 입력하는 것은 다릅니다. 표의 구조화 참조는 새 행을 따라 늘어날 수 있지만, 분산된 배열 수식 자체는 표 안에서 지원되지 않습니다. 예를 들어 표 이름이 Sales이고 지역 열이 Sales[지역]이면, 표 밖의 빈 셀에 =UNIQUE(Sales[지역])를 넣어 고유 목록을 만들 수 있습니다.
수식을 표 안의 계산 열에 입력했다면 표를 통째로 범위로 바꾸기 전에 빈 영역의 일반 셀로 수식을 옮겨 보세요. 표를 일반 범위로 변환하면 필터와 구조화 참조 등 기존 사용 방식이 달라질 수 있습니다. 변환이 필요한 경우에도 먼저 사본에서 표 기반 수식·차트·자동 확장 동작을 확인하세요.
5. 병합 셀과 워크시트 끝을 가로지르는 결과를 점검하세요
분산 범위가 병합 셀과 겹치는 경우
동적 배열 수식은 병합된 셀을 가로질러 결과를 펼칠 수 없습니다. 점선 범위 안에 병합 셀이 있으면 병합을 풀거나 수식 시작 셀을 빈 공간으로 옮깁니다. 병합 셀에는 제목·서식이 들어 있을 수 있으므로, 서식과 값을 사본에서 보존하고 작업한 뒤 인쇄·보고서 화면도 다시 확인하세요.
전체 열 참조가 결과를 시트 끝까지 늘리는 경우
동적 배열 Excel에서 전체 열을 조회값으로 넘기는 수식은 의도보다 훨씬 많은 결과를 만들 수 있습니다. Microsoft 예시처럼 E2의 =VLOOKUP(A:A,A:C,2,FALSE)는 A열 전체를 조회해 최대 1,048,576개 결과를 반환하려다 시트 끝을 넘을 수 있습니다. 실제 자료 행에 맞춰 범위를 제한하세요.
=VLOOKUP(A2:A7,$A$2:$C$7,2,FALSE)
여섯 행의 결과를 한 번에 분산하려는 예라면 위처럼 A2:A7만 조회합니다. 표 안에서 한 행씩 계산하려는 작업이라면 =VLOOKUP(A2,$A$2:$C$7,2,FALSE)를 첫 데이터 행에 넣고 필요한 행까지 복사합니다. 다만 조회값 범위와 반환 열 번호는 실제 표에 맞추고, 예상 결과 수가 행 수와 일치하는지 확인하세요.
6. 배열 크기가 흔들리거나 메모리 부족이면 수식 범위를 줄입니다
=SEQUENCE(RANDBETWEEN(1,1000))처럼 난수 함수로 배열 높이를 결정하면 다시 계산할 때마다 출력 크기가 달라집니다. Excel은 분산 배열의 크기를 안정적으로 결정하지 못해 #SPILL!을 반환할 수 있습니다. 먼저 휘발성 함수가 필요한 업무인지 검토하고, 출력 건수를 고정된 입력값으로 정하거나 변동 범위를 별도의 셀에서 관리하세요. 수식이 한 번 표시됐다는 사실만으로 다음 재계산도 안전하다고 보지 말고, 다시 계산한 뒤 끝 행을 확인합니다.
큰 참조 배열이나 여러 동적 배열의 계산으로 메모리가 부족하면 범위를 실제 데이터 행에 맞추고, 불필요한 전체 열·전체 행 참조를 제한합니다. Microsoft는 작은 배열이나 더 작은 참조 범위를 사용하도록 안내합니다. 크기만 줄였다고 업무상 필요한 행이 빠지지 않았는지 별도의 행 수·합계 검산을 추가하세요.
| 오류 상황 | 먼저 볼 곳 | 안전한 조치 |
|---|---|---|
| 점선 범위 안에 값 또는 빈 문자열 수식 | 오류 메뉴의 방해 셀 주소·수식 입력줄 | 필요한 값을 복사·이동한 뒤 해당 셀만 비웁니다. |
| 수식이 Excel 표 안에 있음 | 수식 셀의 표 경계 | 표 바깥의 빈 영역으로 수식을 이동합니다. |
| 결과 범위가 병합 셀과 겹침 | 점선 안의 병합 상태 | 셀을 안전하게 분리하거나 빈 범위로 수식을 옮깁니다. |
| 전체 열 입력으로 결과가 너무 큼 | A:A 같은 전체 열 인수 | 실제 데이터가 있는 행으로 참조 범위를 제한합니다. |
| 계산할 때마다 배열 길이가 변함 | RAND·RANDBETWEEN 등 휘발성 함수 | 배열 크기를 결정하는 기준을 안정된 입력값으로 분리합니다. |
| 메모리 부족 메시지 | 배열 크기와 참조 범위 | 필요한 행만 계산하고 중간 결과를 나눠 검증합니다. |
7. 피벗 테이블의 #SPILL!은 수식 대신 확장 공간을 확인하세요
피벗 테이블이 새 항목을 추가하거나 새로 고침하면서 커지다가 셀 값·병합 셀·시트 가장자리에 막히는 경우에도 #SPILL!이 표시될 수 있습니다. 이때는 동적 배열 수식의 편집이 아니라 피벗 테이블 이동·크기와 확장 영역을 확인해야 합니다. 피벗 영역의 내용은 지우기 전에 다른 위치로 복사하거나 피벗을 빈 영역으로 옮겨 결과를 검증하세요.
기능 범위 주의: Microsoft의 2026년 10월 4일 도움말은 피벗 테이블용 #SPILL!을 Microsoft 365 Insider 프로그램 참가자에게 제공 중이라고 안내합니다. 일반 Excel에서 이 유형이 보이지 않는다고 해서 분산 수식 오류가 없는 것은 아니며, 사용 중인 버전·업데이트 채널에서 기능을 지원하는지 먼저 확인하세요. 피벗의 데이터 원본 새 행이 빠지는 문제라면 Excel 피벗 새 데이터·원본 범위 가이드도 확인할 수 있습니다.
8. 함수 지원·다른 통합 문서 오류는 #SPILL!과 나눠 봅니다
수식 결과가 #NAME?이나 _xlfn.UNIQUE처럼 보이면 결과 범위가 막혔다기보다 현재 Excel이 해당 함수를 지원하지 않는 상황일 수 있습니다. UNIQUE·FILTER 등 사용하는 함수의 Microsoft 지원 버전을 확인하고, 파일을 여는 모든 사용자의 Excel 버전도 고려합니다. 기능이 없는 환경에서는 고급 필터·일반 수식처럼 호환되는 대안을 검토하세요.
동적 배열을 다른 통합 문서에서 참조하는 수식은 원본 통합 문서가 닫힐 때 새로 고침 과정에서 #REF!를 반환할 수 있습니다. 이는 #SPILL의 막힌 범위 해결과 다른 호환성 문제입니다. Excel 지원 범위와 두 파일의 열림 상태를 확인한 뒤, 파일을 닫아도 갱신돼야 하는 보고서라면 같은 파일에 원본 표를 두거나 검증된 값 복사 방식을 검토하세요.
Excel 구버전에서 공유받은 동적 배열 수식의 표시·편집 결과는 파일을 저장하기 전에 복사본으로 시험합니다. 수식이 들어 있는 파일을 다른 버전에서 열었다는 이유만으로 분산 범위의 수동 값을 지우지 마세요.
9. 오류가 사라진 뒤 출력 범위와 원본을 검산하세요
- 예상 출력 수를 확인합니다. 가상 예제에서는 고유 지점이 4개이므로 D2:D5까지 나타나야 합니다.
- 방해 셀의 원래 내용을 복원합니다. 옮겨둔 메모·데이터를 목적에 맞는 새 위치에 두고, 삭제하거나 덮어쓰지 않았는지 확인합니다.
- 범위 주소를 다시 봅니다. 수식이 실제 입력 데이터 마지막 행까지 포함하는지, 빈 행이나 다른 표까지 불필요하게 읽는지 확인합니다.
- 종속 수식을 확인합니다. 분산 결과를 참조하는 수식은
D2#처럼 분산 범위 연산자를 사용하는지 살펴봅니다. 이 연산자는 정상적으로 분산된 배열의 전체 크기를 가리킵니다. - 저장 후 다시 엽니다. 원본 또는 공유 상대의 Excel 버전에서 결과가 유지되는지 확인합니다. 다른 통합 문서 참조는 열림 상태도 바꿔 시험합니다.
수식을 고친 뒤 출력 행 수가 변했거나 downstream 보고서가 달라졌다면 오류 해결만으로 끝내지 마세요. 수식 변경 전후의 중복 제거 결과, 합계, 피벗 범위, 차트 입력 범위도 맞는지 점검합니다. 셀 참조·계산 결과 전반이 문제라면 Excel 수식 표시·텍스트 형식·자동 계산 진단에서 계산 문제를 분리할 수 있습니다.
자주 묻는 질문
스필 범위가 비어 보이는데도 #SPILL!이 나요.
화면에 보이지 않는 공백 문자, 빈 문자열을 반환하는 수식, 숨은 행의 값이 있을 수 있습니다. 오류 셀의 점선 범위와 방해 셀 선택 메뉴를 보고 해당 셀의 실제 수식을 확인하세요. 필요한 값을 먼저 보존합니다.
분산 결과 중간 셀 하나를 직접 수정할 수 있나요?
그 셀은 첫 셀의 수식이 만든 배열 결과라 개별 수정 대상이 아닙니다. 수식이 있는 왼쪽 위 셀을 바꾸거나, 결과를 값으로 고정해야 하는 업무 목적이라면 복사본에 붙여넣기 옵션을 사용하고 수식·값 중 무엇을 남길지 확인하세요.
Excel 표 안에서 UNIQUE나 FILTER를 못 쓰나요?
표 자체의 계산 열에서 여러 셀로 분산되는 수식은 지원되지 않습니다. 입력 원본은 표에 두고, 고유 목록·필터 결과 수식은 표 밖의 빈 셀에서 시작하도록 배치하세요.
행을 삭제하면 가장 빨리 해결되나요?
행 삭제는 다른 레코드·참조·수식 범위도 움직일 수 있습니다. 필요한 데이터인지 확인하지 않은 상태로 지우지 말고, 값을 옮기거나 수식을 빈 영역으로 이동해 먼저 해결하세요.
피벗 테이블에서 보이는 #SPILL!도 같은 방식인가요?
피벗의 표시 범위가 값·병합 셀 등에 막힐 수 있다는 점은 비슷하지만, 동적 배열 수식이 아닌 피벗 공간 문제입니다. 피벗이 덮어쓰려는 범위와 원본 값을 확인하고 빈 공간으로 옮겨 새로 고침 결과를 검산하세요. 해당 표기 기능은 현재 Microsoft 365 Insider 제공 범위로 안내됩니다.
이어 읽기
Microsoft 공식 자료
- #SPILL! 오류를 수정하는 방법 — 막힌 범위·휘발성 배열 크기·워크시트 끝·표·메모리·병합 셀 및 피벗 기능 제공 범위
- 동적 배열 수식 및 분산된 배열 동작 — 왼쪽 위 수식 셀, 분산 범위, 표 바깥 배치, 범위 방해 및 통합 문서 간 제한
- 분산 범위 연산자 —
#연산자로 동적 배열의 전체 출력 범위 참조 - 동적 배열을 지원하지 않는 Excel에서 동적 배열 수식 사용 — 구버전 파일의 호환 표시와 수식 결과 차이
- 피벗 테이블 #SPILL! 오류 해결 — 피벗 테이블의 별도 확장 공간 오류와 조치