IT·디지털 정보

엑셀 #SPILL! 오류 해결방법|동적 배열·병합 셀·수식 범위 충돌 원인과 해결

스마트생활 길잡이 2026. 10. 30. 14:00

엑셀에서 수식을 입력했는데 계산 결과 대신 #SPILL! 오류가 나타나는 경우가 있습니다.

특히 FILTER, SORT, UNIQUE, SEQUENCE 같은 함수를 사용하거나 여러 셀에 결과를 자동으로 표시하는 수식을 입력할 때

발생하기 쉽습니다.

일반적인 수식 오류와 달리 #SPILL! 오류는 수식 자체보다 결과가 표시될 셀의 공간이나 배열 크기 때문에 발생하는 경우가

많습니다.

 

이번 글에서는 엑셀 #SPILL! 오류의 의미부터 동적 배열, 병합 셀, 수식 범위 충돌 등 주요 원인과 해결방법을

자세히 알아보겠습니다.

핵심 요약

  • #SPILL! 오류는 동적 배열 수식의 결과를 필요한 셀 범위에 표시하지 못할 때 발생합니다.
  • 결과가 표시될 범위에 기존 데이터나 공백 문자 등이 있으면 오류가 발생할 수 있습니다.
  • 병합 셀이 배열 결과 범위와 겹쳐도 오류가 발생합니다.
  • 엑셀 표(Table) 내부에서는 여러 셀로 확장되는 동적 배열 수식을 직접 사용할 수 없습니다.
  • 전체 열 참조로 배열 결과가 너무 커지면 워크시트 범위를 초과할 수 있습니다.
  • 오류 셀을 선택해 표시되는 점선 테두리와 오류 메뉴를 확인하면 원인을 찾는 데 도움이 됩니다.

 

1. 엑셀 #SPILL! 오류란?

엑셀의 동적 배열(Dynamic Array)은 하나의 수식으로 계산된 여러 결과를 인접한 셀에 자동으로 표시하는 기능입니다.

이처럼 하나의 수식 결과가 여러 셀로 확장되는 동작을 **Spill(스필)**이라고 합니다.

 

예를 들어 A2부터 A6까지 숫자가 입력되어 있을 때 다음 수식을 입력해 보겠습니다.

=A2:A6*2

동적 배열을 지원하는 엑셀에서는 계산 결과가 수식을 입력한 셀부터 아래쪽 여러 셀에 자동으로 표시됩니다.

 

그런데 결과가 표시될 셀 중 하나에 이미 다른 값이 입력되어 있다면 어떻게 될까요?

엑셀은 기존 데이터를 임의로 덮어쓰지 않기 때문에 배열 결과를 표시하지 못하고 #SPILL! 오류를 반환합니다.

 

즉, #SPILL! 오류는 반드시 수식이 잘못되었다는 의미는 아닙니다.

수식은 정상이어도 결과를 표시할 공간이 확보되지 않으면 발생할 수 있는 오류입니다.

 

 

2. 결과 범위에 다른 데이터가 있을 때

가장 흔한 원인은 배열 결과가 표시될 셀에 기존 데이터가 남아 있는 경우입니다.

예를 들어 다음과 같은 수식을 입력했다고 가정하겠습니다.

=SEQUENCE(5)

이 수식은 1부터 5까지 숫자를 세로로 표시합니다.

수식을 B2 셀에 입력하면 정상적인 경우 B2부터 B6까지 결과가 나타납니다.

하지만 B4 셀에 이미 숫자나 문자가 입력되어 있다면 배열이 확장되지 못합니다.

해결방법

  1. #SPILL! 오류가 표시된 셀을 선택합니다.
  2. 배열 결과가 표시될 점선 테두리 범위를 확인합니다.
  3. 오류 표시 아이콘을 클릭합니다.
  4. 방해하는 셀 선택(Select Obstructing Cells) 항목이 표시되면 선택합니다.
  5. 해당 셀의 내용을 확인하고 불필요한 데이터만 삭제하거나 이동합니다.

여기서 주의할 점이 있습니다.

셀에 아무것도 보이지 않더라도 공백 문자나 수식이 들어 있을 수 있습니다.

특히 다른 프로그램에서 데이터를 복사해 붙여넣은 경우 눈에 보이지 않는 값이 남아 있을 수 있으므로 확인이 필요합니다.

단순히 셀의 글자색을 흰색으로 변경하거나 표시 형식을 바꾸는 것만으로는 문제가 해결되지 않습니다.

 

기존 데이터가 필요한 경우에는 삭제하지 말고 수식 위치를 다른 빈 영역으로 옮기는 것이 안전합니다.

 

 

3. 병합 셀이 있을 때 #SPILL! 오류 해결방법

엑셀에서 보고서나 정리표를 만들다 보면 여러 셀을 하나로 병합하는 경우가 많습니다.

그런데 동적 배열 수식의 결과 범위에 병합 셀이 포함되어 있으면 #SPILL! 오류가 발생할 수 있습니다.

예를 들어 다음 수식을 입력했다고 가정하겠습니다.

=SEQUENCE(5)

결과가 표시될 B2 범위 중 B4가 병합되어 있다면 정상적으로 결과를 표시할 수 없습니다.

해결방법

  1. #SPILL! 오류가 발생한 셀을 선택합니다.
  2. 배열 결과가 표시될 범위를 확인합니다.
  3. 해당 범위에 병합된 셀이 있는지 확인합니다.
  4. 병합된 셀을 선택합니다.
  5. 엑셀 상단의 홈 → 병합하고 가운데 맞춤 메뉴에서 병합을 해제합니다.
  6. 수식 결과가 정상적으로 표시되는지 확인합니다.

병합을 해제할 때는 기존 셀 내용의 보존 여부도 확인해야 합니다.

일반적으로 병합된 셀의 값은 병합 영역의 왼쪽 위 셀에 저장되므로, 중요한 데이터가 있다면 먼저 백업하는 것이 좋습니다.

병합 셀을 유지해야 하는 보고서라면 수식 위치를 병합되지 않은 다른 영역으로 변경하는 방법도 있습니다.

 

4. 수식 범위가 워크시트를 초과할 때

#SPILL! 오류는 결과가 표시될 공간이 단순히 막힌 경우뿐 아니라 배열 크기가 엑셀 워크시트 범위를 초과할 때도 발생합니다.

대표적인 사례가 전체 열 참조입니다.

예를 들어 A열 전체에 계산을 적용하려고 다음 수식을 B2 셀에 입력했다고 가정하겠습니다.

=A:A*2

이 수식은 A열 전체인 1,048,576개 행에 대한 결과를 만들려고 합니다.

하지만 B2에서 시작하면 워크시트 마지막 행을 넘어가므로 결과를 모두 표시할 수 없습니다.

해결방법

전체 열을 참조하기보다 실제 데이터가 있는 범위만 지정합니다.

변경 전:

=A:A*2

변경 후:

=A2:A100*2

이렇게 하면 필요한 범위에 대해서만 결과를 계산할 수 있습니다.

다만 데이터가 계속 추가되는 파일이라면 범위를 무조건 고정하기보다 엑셀 표의 구조적 참조나 데이터 크기에 맞춰 범위를 관리하는 방식도 검토할 수 있습니다.

 

동적 배열 수식에서 전체 열 참조는 의도하지 않게 매우 큰 배열을 생성할 수 있으므로 주의해야 합니다.

 

 

5. 엑셀 표(Table) 내부에서 발생하는 #SPILL! 오류

엑셀에는 일반 셀 범위와 별도로 표(Table) 기능이 있습니다.

데이터 영역을 선택한 뒤 Ctrl + T를 누르면 표를 만들 수 있습니다.

표 기능은 자동 필터, 구조적 참조, 데이터 확장 등에 유용하지만 동적 배열 수식에는 제한이 있습니다.

 

여러 셀로 결과가 확장되는 동적 배열 수식은 엑셀 표 내부에서 직접 Spill될 수 없습니다.

예를 들어 표 내부 셀에 다음 수식을 입력하면 문제가 발생할 수 있습니다.

=SEQUENCE(5)

해결방법

방법은 두 가지입니다.

첫 번째는 동적 배열 수식을 표 외부의 일반 셀 영역에 입력하는 것입니다.

두 번째는 표 디자인 메뉴에서 표를 일반 범위로 변환한 뒤 수식을 사용하는 것입니다.

다만 표를 일반 범위로 변환하면 표 기능이 해제되므로 기존 데이터 관리 방식에 영향을 줄 수 있습니다.

따라서 표 기능을 유지해야 한다면 원본 데이터는 표로 관리하고 동적 배열 결과는 표 바깥에 표시하는 방식을 추천합니다.

 

6. FILTER·SORT·UNIQUE 함수에서 #SPILL! 오류가 발생할 때

동적 배열을 활용하는 대표적인 함수로 FILTER, SORT, UNIQUE가 있습니다.

FILTER 함수

조건에 맞는 데이터를 여러 셀에 반환하는 함수입니다.

=FILTER(A2:C100,B2:B100="완료","결과 없음")

이 수식은 B열의 값이 '완료'인 행을 찾아 A열부터 C열까지 반환합니다.

결과가 여러 행과 열로 확장될 수 있으므로 출력 범위에 다른 데이터가 있으면 #SPILL! 오류가 발생할 수 있습니다.

SORT 함수

데이터를 정렬하여 반환하는 함수입니다.

=SORT(A2:C20,2,1)

A2 범위를 두 번째 열 기준으로 오름차순 정렬합니다.

원본 데이터와 별도의 출력 공간이 필요하므로 수식 아래쪽과 오른쪽 셀을 확인해야 합니다.

UNIQUE 함수

중복 값을 제거한 결과를 반환합니다.

=UNIQUE(A2:A100)

A2 범위에서 중복을 제외한 고유 값을 표시합니다.

결과 개수는 원본 데이터에 따라 달라지므로 출력 영역에 충분한 공간이 필요합니다.

이 세 함수에서 #SPILL! 오류가 발생하면 먼저 수식이 반환할 결과의 크기와 출력 범위를 확인하는 것이 좋습니다.

참고로 FILTER 함수에서 조건에 맞는 결과가 없을 때 나타나는 오류는 #SPILL!과 다른 문제입니다. 위 예시처럼 세 번째 인수에 '결과 없음'을 지정하면 일치하는 데이터가 없는 상황을 처리할 수 있습니다.

 

7. 배열 크기가 계속 바뀌는 경우

일부 동적 배열 수식은 계산할 때마다 결과의 크기가 달라질 수 있습니다.

엑셀은 배열의 크기를 결정하고 결과를 표시하려고 하지만, 계산 과정에서 크기가 계속 바뀌면 #SPILL! 오류가 발생할 수 있습니다.

예를 들어 다음과 같이 난수를 이용해 배열 크기를 결정하는 수식이 있습니다.

=SEQUENCE(RANDBETWEEN(1,1000))

RANDBETWEEN 함수는 재계산될 때마다 다른 값을 반환할 수 있습니다.

그 결과 SEQUENCE 함수가 생성해야 할 배열 크기도 계속 달라질 수 있습니다.

이런 경우 엑셀에서 배열 크기를 안정적으로 결정하지 못하면 #SPILL! 오류가 발생할 수 있습니다.

해결방법

배열 크기를 결정하는 값을 별도 셀에 저장하거나 일정한 숫자로 고정합니다.

예를 들어 D1 셀에 필요한 배열 크기를 입력하고 다음과 같이 작성합니다.

=SEQUENCE(D1)

이렇게 하면 배열 크기를 명확하게 관리할 수 있습니다.

8. #SPILL! 오류와 다른 엑셀 오류의 차이

엑셀에서는 수식의 문제 유형에 따라 서로 다른 오류가 표시됩니다.

 

                오류                                                        주요 의미

#SPILL! 배열 결과를 필요한 범위에 표시하지 못함
#VALUE! 값이나 인수의 형식이 적절하지 않음
#REF! 참조하는 셀이나 범위가 유효하지 않음
#NAME? 함수 이름이나 정의된 이름을 인식하지 못함
#CALC! 계산 엔진에서 지원하지 않는 계산 상황 등이 발생함
#DIV/0! 0 또는 빈 셀로 나누기를 시도함

 

오류를 해결할 때는 표시된 오류 코드부터 정확히 확인하는 것이 중요합니다.

예를 들어 FILTER 함수에서 결과가 없을 때 #CALC! 오류가 발생한 경우에는 출력 범위를 비우는 것만으로 해결되지

않을 수 있습니다.

반면 #SPILL! 오류라면 수식 결과가 확장될 공간부터 확인하는 것이 효율적입니다.

 

 

9. #SPILL! 오류 해결을 위한 점검 순서

오류가 발생했을 때는 다음 순서대로 확인하면 불필요한 작업을 줄일 수 있습니다.

 

첫 번째, 오류 셀을 선택합니다.

배열 결과가 표시될 점선 테두리와 오류 메뉴를 확인합니다.

 

두 번째, 결과 범위의 기존 데이터를 확인합니다.

숫자, 문자, 공백 문자, 기존 수식 등이 배열 확장을 방해하는지 확인합니다.

 

세 번째, 병합 셀을 확인합니다.

결과 범위에 병합된 셀이 포함되어 있다면 병합을 해제하거나 수식 위치를 변경합니다.

 

네 번째, 엑셀 표 내부인지 확인합니다.

동적 배열 수식을 표 내부에 입력했다면 표 외부로 이동합니다.

 

다섯 번째, 수식 참조 범위를 확인합니다.

A처럼 전체 열을 참조하거나 결과가 워크시트 경계를 넘어가는지 점검합니다.

 

여섯 번째, 배열 크기가 불안정한지 확인합니다.

RAND, RANDBETWEEN 같은 변동 함수가 배열 크기에 영향을 주는지 살펴봅니다.

 

일곱 번째, 오류 메뉴의 상세 원인을 확인합니다.

#SPILL! 오류는 원인에 따라 해결방법이 다르므로 엑셀에서 제공하는 오류 설명을 함께 확인하는 것이 좋습니다.

 

 

10. 자주 묻는 질문 FAQ

Q1. 엑셀 #SPILL! 오류는 수식이 잘못되어 발생하나요?

반드시 그렇지는 않습니다.

수식 자체가 정상이어도 결과가 표시될 공간이 부족하거나 병합 셀, 표 구조 등의 제한 때문에 발생할 수 있습니다.

Q2. #SPILL! 오류가 발생한 셀만 삭제하면 해결되나요?

오류 셀의 수식을 삭제하면 오류 표시는 사라지지만 원인을 해결한 것은 아닙니다.

수식을 계속 사용하려면 결과 범위를 방해하는 데이터나 구조를 확인해야 합니다.

Q3. 병합 셀을 반드시 해제해야 하나요?

동적 배열 결과 범위와 겹치는 병합 셀은 배열 확장을 방해합니다.

병합을 해제하거나 수식을 다른 빈 영역으로 옮겨야 합니다.

Q4. 엑셀 2016에서도 동적 배열을 사용할 수 있나요?

Excel 2016은 최신 동적 배열 기능을 지원하지 않습니다.

동적 배열 기능은 Microsoft 365용 Excel, Excel 2021, Excel 2024 등 지원 버전에서 사용할 수 있습니다. 다만 함수별 지원 여부는 버전에 따라 다를 수 있습니다.

Q5. #SPILL! 오류를 IFERROR 함수로 숨겨도 되나요?

=IFERROR(수식,"") 형태로 오류 표시를 처리할 수 있는 경우는 있지만, 배열 확장 문제 자체를 해결하는 방법은 아닙니다.

오히려 원인을 찾기 어려워질 수 있으므로 먼저 오류의 발생 원인을 해결하는 것이 좋습니다.

 

마무리

엑셀 #SPILL! 오류는 처음 접하면 복잡해 보이지만 대부분은 동적 배열 결과를 표시할 공간이나 배열의 크기와 관련되어 있습니다.

특히 기존 데이터가 있는 셀, 병합 셀, 엑셀 표 내부, 전체 열 참조는 우선적으로 확인해야 할 항목입니다.

 

FILTER, SORT, UNIQUE 같은 함수를 자주 사용하는 경우에는 원본 데이터와 결과가 표시될 영역을 분리해 관리하면

오류를 줄이는 데 도움이 됩니다.

 

무엇보다 중요한 것은 #SPILL! 오류가 발생했을 때 수식을 바로 삭제하기보다 배열 결과가 표시될 범위부터 확인하는 것입니다.

 

이 방법을 익혀두면 동적 배열을 활용한 엑셀 데이터 정리와 분석 작업을 더욱 효율적으로 진행할 수 있습니다.