EXCEL · DYNAMIC ARRAYS
FILTER #SPILL 오류를
데이터 삭제 없이 해결하기
FILTER는 셀 하나가 아니라 여러 셀의 결과 영역을 만듭니다. 수식이 맞아도 그 영역에 값·공백·병합 셀·표 경계가 있으면 펼칠 수 없습니다. 먼저 Excel이 알려 주는 구체적인 원인을 확인합니다.
수정: · 합성 예제와 예상 결과를 보강했습니다.
01 / MEANING
수식의 문법과
출력 공간은 별개입니다
FILTER, SORT, UNIQUE 같은
동적 배열 수식은 결과 크기에 맞춰 아래와 옆 셀로 펼쳐집니다.
결과가 3행 3열이면 수식을 입력한 셀을 포함해 9개의 셀이
필요합니다. 그중 하나라도 비어 있지 않으면 수식 셀에는 #SPILL이
표시될 수 있습니다.
다만 #SPILL의 원인이 항상 막힌 셀은 아닙니다. 결과가 워크시트 끝을 넘어가거나, 크기를 결정할 수 없는 수식이거나, Excel Table 안에서 동적 배열을 입력한 경우도 있습니다. 경고 메뉴의 설명을 먼저 읽고 원인에 맞는 조치를 선택합니다.
02 / DIAGNOSE
보이지 않는 빈칸도
수식 입력줄에서 확인합니다
수식 셀을 선택하고 경고 아이콘을 엽니다. 막힌 범위 문제라면
Excel 버전에 따라 Select Obstructing Cells를 제공할 수 있습니다.
해당 명령으로 선택된 셀을 Formula Bar에서 확인합니다. 화면상
비어 보여도 공백 한 칸이나 =""을 반환하는 수식이
있을 수 있습니다.
메모나 기존 수식을 안전한 위치로 옮기거나 FILTER 수식을 충분히 빈 영역으로 옮깁니다. 주변 영역 전체를 선택해 Delete를 누르면 보이지 않던 업무 규칙이나 기록까지 지울 수 있으므로 피합니다. 오류 상세가 다른 원인을 말한다면 막힌 셀 찾기를 억지로 적용하지 않습니다.
03 / REPRODUCE
5행 예제로
막힘과 정상 결과를 비교합니다
빈 시트 A1:C6에 헤더 record_id, region, hours와
다음 다섯 행을 입력합니다.
R4, North, 4
R5, West, 3
record_id region hours R1 North 2 R2 South 5 R3 North 0 R4 North 4 R5 West 3
K2에 North를 입력하고 F1:H1에 헤더 세 개를
복사합니다. F2 한 셀에만
=FILTER(A2:C6,B2:B6=K2,"No matches")를 입력합니다.
설치 환경에 따라 인수 구분자는 쉼표 대신 세미콜론일 수 있습니다.
정상 결과는 F2:H4의 R1, R3, R4이며 hours는 2, 0, 4입니다. 합계는
6이고 0시간 레코드도 남아야 합니다. 오류를 재현하려면 수식 입력
전에 G3에 note를 넣습니다. FILTER 입력 후 G3의
note를 F2:H4 밖으로 이동하면 세 행이 펼쳐져야 합니다.
| record_id | region | hours |
|---|---|---|
| R1 | North | 2 |
| R3 | North | 0 |
| R4 | North | 4 |
04 / STRUCTURE
원본은 Table이어도 되지만
출력 수식은 일반 범위에 둡니다
FILTER의 source가 Excel Table인 것은 유용합니다. 원본 행이 늘 때 구조화 참조가 확장됩니다. 그러나 spill 수식 자체를 Table 계산 열 안에 넣으면 결과가 여러 행으로 펼쳐질 수 없습니다. Table 옆의 일반 worksheet 범위에 수식을 두고 결과가 커질 공간을 확보합니다.
결과 영역에 병합 셀이 있으면 다른 빈 영역을 쓰는 것이 가장 안전합니다. 병합을 해제해야 한다면 병합 셀의 내용과 레이아웃 목적을 먼저 검토합니다. 열 전체 참조 때문에 결과가 시트 끝을 넘는 경우에는 실제 데이터 범위나 Table 열 참조로 범위를 제한합니다.
05 / VERIFY
오류가 사라진 뒤에도
선택 조건을 확인합니다
spill 공간을 비웠다고 FILTER 조건이 맞아지는 것은 아닙니다.
예제에서는 레코드 ID R1·R3·R4, region North, hours 합계 6을
대조합니다. 0을 빈 값으로 오해해 R3을 제외하지 않았는지도
확인합니다. 세 번째 인수 "No matches"는 일치 결과가
없을 때 표시할 문구이며, 막힌 공간을 해결하지는 않습니다.
다른 원인도 Microsoft의 #SPILL 오류 문서에서 확인할 수 있습니다. 이 글에서는 합성 예제(fixture)로 레코드 선택 논리를 검사했습니다. 모든 Excel 버전의 실제 UI를 실행해 검증한 것은 아닙니다.