엑셀 #SPILL! 오류 — 6가지 원인과 해결법
동적 배열 수식에서 #SPILL!이 보이면 여러 결과를 시트에 표시하지 못한 이유를 먼저 확인합니다. 출력 영역이 막힌 경우뿐 아니라 배열 크기를 확정하지 못하거나 메모리가 부족한 경우도 있습니다.
대표 이미지는 본문의 #SPILL! 진단 원인 6가지를 요약한 설명용 도해입니다. 일반 셀 서식이나 메모만으로는 출력이 막히지 않으며 필요한 데이터는 사본에서 먼저 점검합니다. AI로 제작했으며 실제 Excel 오류 화면이나 실행 검증 기록이 아닙니다.
아래에서는 자주 점검할 원인 6가지를 정리합니다. 예제는 FILTER, SEQUENCE 등 동적 배열 함수를 지원하는 Microsoft 365, Excel 2021 또는 Excel 2024 환경을 기준으로 합니다.
1. 동적 배열과 #SPILL! 오류 이해하기

동적 배열 수식은 첫 번째 셀에 한 번 입력하면 결과를 인접한 셀로 펼칩니다. 결과를 수정할 때도 왼쪽 위의 수식 셀을 편집합니다.
예를 들어 A1:D10을 원본으로 사용한다면 결과 수식은 원본과 겹치지 않는 F2에 둡니다. 첫 행이 제목이고 B열이 상태라면 다음처럼 씁니다. 출력 공간 F2:I10은 비워 두고 병합이나 표 영역과 겹치지 않게 합니다.
=FILTER(A2:D10,B2:B10="완료","결과 없음")
이 수식은 완료 행의 4개 열을 반환하며, 조건에 맞는 행이 없으면 결과 없음이라고 표시합니다. 원본에 포함된 D2에 수식을 넣으면 원본을 덮어쓰고 자기 자신을 참조할 수 있습니다. FILTER 공식 문서와 동적 배열의 출력 방식을 참고하세요.
2. 원인별 진단과 해결법

오류 셀을 선택하고 오류 알림의 세부 이유를 확인합니다. 출력 범위가 막혔다면 점선으로 표시되는 예상 범위와 방해 셀 선택(Select Obstructing Cells) 기능을 이용합니다. 먼저 복사본에서 작업하고, 필요한 데이터를 지우지 말고 결과 수식이나 방해 데이터를 옮기세요.
원인 1: 출력 범위에 값이나 수식이 있음
숫자, 문자, 공백 문자, 빈 문자열을 반환하는 수식도 출력 공간을 차지할 수 있습니다. 확인된 방해 셀의 내용을 옮기거나 비웁니다. 배경색·테두리 같은 일반 셀 서식이나 메모만 있다는 이유로 #SPILL!이 생기지는 않습니다. 서식을 무조건 지울 필요는 없습니다.
원인 2: 출력 범위가 병합 셀과 겹침
배열은 병합 셀을 건너뛰며 출력하지 않습니다. 결과 수식을 다른 빈 영역으로 옮기거나, 필요한 데이터와 배치를 확인한 뒤 홈 → 병합하고 가운데 맞춤 → 셀 병합 해제를 사용합니다. 주변 모든 셀을 일괄 해제할 필요는 없습니다.
원인 3: 배열 수식을 Excel 표 안에 입력함
여러 셀로 펼쳐지는 배열 수식은 Excel 표(Table) 내부에서 지원되지 않습니다. 수식을 표 밖의 빈 셀로 옮깁니다. 표 안의 데이터를 참조하는 것은 가능하므로 원본 표를 없애거나 결과를 반드시 값으로 바꿀 필요는 없습니다.
원인 4: 출력이 워크시트 끝을 넘어감
워크시트는 1,048,576행, 16,384열입니다. 시작 위치와 결과 크기를 함께 확인하고, 수식을 위쪽·왼쪽으로 옮기거나 필요한 입력 범위만 참조합니다. 예를 들어 A1048575에 =SEQUENCE(3)을 넣으면 마지막 값이 시트 밖으로 나갑니다. A1048574로 옮기면 세 행이 모두 들어갑니다. Excel 규격과 제한에서 확인할 수 있습니다.
원인 5: 재계산 중 배열 크기가 계속 바뀜
난수로 결과 행 수를 정하는 등 재계산마다 크기가 바뀌면 크기를 확정하지 못할 수 있습니다. 예를 들어 =SEQUENCE(RANDBETWEEN(1,1000)) 대신 필요한 행 수를 고정하거나 입력 셀의 안정된 숫자를 사용합니다.
원인 6: 배열 계산에 필요한 메모리가 부족함
오류 알림이 메모리 부족을 가리키면 전체 행·열 참조와 큰 중간 배열을 줄입니다. 실제 데이터 범위로 좁혀 복사본에서 다시 확인합니다. 메모리를 소진하는 대형 배열을 일부러 만들어 재현하지 마세요.
위 오류 유형과 방해 셀 확인 방법의 근거는 Microsoft의 #SPILL! 오류 안내입니다. 이 6가지로 설명되지 않는 오류도 있으므로 세부 메시지가 다르면 함수 인수와 지원 환경을 함께 확인합니다.
3. @ 연산자를 원인으로 오해하지 않기
@는 암시적 교차 연산자로, 여러 값에서 하나의 값을 선택합니다. 이 기호가 있다는 사실만으로 #SPILL!의 원인이 되지는 않습니다. 오히려 이를 제거하면 여러 결과가 펼쳐져 새 출력 공간이 필요할 수 있습니다.
예를 들어 C2에서 =@A1:A3은 같은 행의 A2 값을 선택합니다. =A1:A3으로 바꾸면 세 값을 C2:C4에 펼치므로 해당 영역을 비워야 합니다. 한 값이 필요한지 전체 배열이 필요한지 먼저 결정하세요. Microsoft의 @ 연산자 설명을 참고하세요.
4. 가상 입력으로 확인하는 예제

아래는 예상 결과를 제시한 수동 실습 절차입니다. Excel에서 직접 실행한 검증 기록은 아닙니다. 각 실습은 새 빈 시트에서 진행하세요.
예제 A: 방해 셀 확인
- A3에
막음을 입력하고 A1에 다음 수식을 입력합니다.
=SEQUENCE(5)
- 예상 결과는
#SPILL!입니다. 오류 알림에서 방해 셀을 선택하면 A3을 확인할 수 있습니다. - A3의 내용을 지우면 A1:A5에 1, 2, 3, 4, 5가 펼쳐지는지 확인합니다. 각 셀에 배경색이나 테두리를 적용해도 값만 비어 있다면 출력할 수 있습니다.
예제 B: 원본과 결과 영역 분리
새 시트의 A1:D4에 아래 가상 데이터를 입력합니다.
| 항목(A열) | 상태(B열) | 수량(C열) | 금액(D열) |
|---|---|---|---|
| 작업 A | 완료 | 2 | 1000 |
| 작업 B | 대기 | 1 | 500 |
| 작업 C | 완료 | 3 | 1500 |
F2:I4를 비워 두고 F2에 입력합니다.
=FILTER(A2:D4,B2:B4="완료","결과 없음")
예상 출력은 F2:I3의 2행 × 4열입니다. 첫 행은 작업 A / 완료 / 2 / 1000, 둘째 행은 작업 C / 완료 / 3 / 1500입니다. 세 상태를 모두 대기로 바꾸면 F2에 결과 없음이 표시됩니다.
예제 C: 고정 크기와 시트 경계
새 빈 시트에서 =SEQUENCE(3)을 A1048575에 입력한 경우와 A1048574에 입력한 경우를 각각 비교합니다. 두 번째 실험 전에는 첫 번째 수식을 지워 두 출력이 겹치지 않게 합니다. 첫 경우는 시트 경계 초과, 둘째 경우는 마지막 세 행에 1, 2, 3이 출력되는 것이 예상 결과입니다.
참고 자료
- Microsoft: #SPILL! 오류 해결
- Microsoft: 동적 배열과 펼쳐짐 동작
- Microsoft: FILTER 함수와 적용 대상
- Microsoft: 암시적 교차 연산자 @
내용 점검일: 2026-10-01 · 공식 문서와 가상 입력의 정적 검산 기준입니다. 메뉴 이름은 Excel 버전에 따라 다를 수 있습니다.