엑셀 #SPILL! 오류 — 6가지 원인과 해결법

동적 배열 수식에서 #SPILL!이 보이면 여러 결과를 시트에 표시하지 못한 이유를 먼저 확인합니다. 출력 영역이 막힌 경우뿐 아니라 배열 크기를 확정하지 못하거나 메모리가 부족한 경우도 있습니다.

대표 이미지는 본문의 #SPILL! 진단 원인 6가지를 요약한 설명용 도해입니다. 일반 셀 서식이나 메모만으로는 출력이 막히지 않으며 필요한 데이터는 사본에서 먼저 점검합니다. AI로 제작했으며 실제 Excel 오류 화면이나 실행 검증 기록이 아닙니다.

아래에서는 자주 점검할 원인 6가지를 정리합니다. 예제는 FILTER, SEQUENCE 등 동적 배열 함수를 지원하는 Microsoft 365, Excel 2021 또는 Excel 2024 환경을 기준으로 합니다.

1. 동적 배열과 #SPILL! 오류 이해하기

SPILL 오류의 방해 셀·병합·표 내부·시트 경계·변동 크기·메모리 원인과 점검 방법 — 설명용 도해
설명용 도해이며 실제 Excel·Power Query 실행 화면이나 실행 검증 기록이 아닙니다. 본문의 가상 입력으로 계산한 기대값을 설명합니다.

동적 배열 수식은 첫 번째 셀에 한 번 입력하면 결과를 인접한 셀로 펼칩니다. 결과를 수정할 때도 왼쪽 위의 수식 셀을 편집합니다.

예를 들어 A1:D10을 원본으로 사용한다면 결과 수식은 원본과 겹치지 않는 F2에 둡니다. 첫 행이 제목이고 B열이 상태라면 다음처럼 씁니다. 출력 공간 F2:I10은 비워 두고 병합이나 표 영역과 겹치지 않게 합니다.

=FILTER(A2:D10,B2:B10="완료","결과 없음")

이 수식은 완료 행의 4개 열을 반환하며, 조건에 맞는 행이 없으면 결과 없음이라고 표시합니다. 원본에 포함된 D2에 수식을 넣으면 원본을 덮어쓰고 자기 자신을 참조할 수 있습니다. FILTER 공식 문서와 동적 배열의 출력 방식을 참고하세요.

2. 원인별 진단과 해결법

SPILL 오류 이유와 예상 출력 공간을 확인하고 여섯 원인을 나누어 사본에서 이동·재시험하는 설명 도해
설명용 도해이며 실제 Excel 오류 화면이 아닙니다. 오류 알림·방해 셀 선택·재시험을 실제 실행한 기록이 아니며, 지원 Excel의 사본에서 확인해야 합니다.

오류 셀을 선택하고 오류 알림의 세부 이유를 확인합니다. 출력 범위가 막혔다면 점선으로 표시되는 예상 범위와 방해 셀 선택(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. 가상 입력으로 확인하는 예제

SPILL 방해 셀 해소와 FILTER 두 행 결과 및 SEQUENCE 시트 경계 비교의 기대값 — 설명용 도해
설명용 도해이며 실제 Excel·Power Query 실행 화면이나 실행 검증 기록이 아닙니다. 본문의 가상 입력으로 계산한 기대값을 설명합니다.

아래는 예상 결과를 제시한 수동 실습 절차입니다. Excel에서 직접 실행한 검증 기록은 아닙니다. 각 실습은 새 빈 시트에서 진행하세요.

예제 A: 방해 셀 확인

  1. A3에 막음을 입력하고 A1에 다음 수식을 입력합니다.
=SEQUENCE(5)
  1. 예상 결과는 #SPILL!입니다. 오류 알림에서 방해 셀을 선택하면 A3을 확인할 수 있습니다.
  2. 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이 출력되는 것이 예상 결과입니다.

참고 자료

내용 점검일: 2026-10-01 · 공식 문서와 가상 입력의 정적 검산 기준입니다. 메뉴 이름은 Excel 버전에 따라 다를 수 있습니다.

함께 읽으면 좋은 글

작성자 소개