[홈] 탭의 [조건부 서식] → [규칙 관리]를 눌렀다가 화면 가득 늘어선 규칙 목록을 보고 놀란 적 있으신가요. 셀 몇 개에만 색을 입힌 기억밖에 없는데, 목록에는 비슷한 규칙이 수십, 수백 개씩 쌓여 있는 경우가 흔합니다.
엑셀 용량이 갑자기 무거워지는 원인을 진단했던 글의 FAQ에서 이 질문에 짧게만 답한 적이 있는데, 이번엔 그 부분만 따로 떼어 실제로 확인해 봤습니다. 범인은 대개 복사 붙여넣기입니다. 규칙 하나를 다른 범위에 복사해 붙일 때마다, 엑셀은 기존 규칙을 넓히는 대신 새 규칙을 하나 더 만드는 방식으로 처리합니다. 이게 실제로 파일에 어떤 흔적을 남기는지, 같은 서식을 200번 나눠 붙인 상황을 직접 만들어 확인해 봤습니다.

같은 조건, 규칙 개수만 다르게 만들어 봤습니다
2,000행 8열짜리 표에 "값이 1000보다 크면 빨간 배경"이라는 규칙을 적용하되, 세 가지 방식으로 저장했습니다. 파이썬 openpyxl 3.1.5로 윈도우 11에서 만든 파일입니다.
| 저장 방식 | 규칙 개수 | sheet1.xml(비압축) | xlsx 파일(압축 후) |
|---|---|---|---|
| 조건부 서식 없음 | 0개 | 573,165 B | 93,107 B |
| 규칙 1개로 전체 범위 지정 | 1개 | 573,329 B | 93,309 B |
| 10행 단위로 200번 나눠 지정 | 200개 | 606,638 B | 95,553 B |
규칙이 200개로 쪼개지자 시트 XML은 33KB 넘게 불었습니다. 그런데 실제 파일 크기는 2.4KB 느는 데 그쳤습니다. 규칙이 200배로 늘어도 최종 용량은 체감할 정도로 커지지 않았습니다.
규칙 하나가 실제로 남기는 흔적
sheet1.xml 안에서 규칙은 이런 모양으로 기록됩니다. 범위와 조건, 적용할 서식 번호만 짧게 적히는 구조입니다.
<conditionalFormatting sqref="A1:H10">
<cfRule type="cellIs" operator="greaterThan" dxfId="0" priority="1">
<formula>1000</formula>
</cfRule>
</conditionalFormatting>
규칙 하나가 XML로는 채 200바이트가 안 됩니다. 200개를 다 합쳐도 시트 전체(560KB대)에 비하면 크지 않은 데다, 이 반복되는 짧은 태그는 ZIP 압축이 유독 잘 먹는 대상입니다. xlsx가 왜 압축에 유리한 구조인지는 xls와 비교해 다룬 글에서 더 자세히 볼 수 있는데, 이번 결과도 같은 원리로 설명됩니다.
그럼 규칙을 그냥 둬도 되나
용량만 보면 방치해도 크게 문제없어 보이지만, 실제로 불편해지는 지점은 따로 있습니다. 규칙이 수백 개로 쪼개지면 [규칙 관리] 창에서 원하는 규칙을 찾기 어려워지고, 어느 범위에 어떤 규칙이 걸려 있는지 파악하기가 힘들어집니다. 규칙이 아주 많이 쌓인 파일에서 계산이나 반응이 느려진다는 사용기도 적지 않은데, 이 부분은 문서 규모와 PC 사양에 따라 체감이 갈릴 수 있어 이번 측정만으로 단정하지는 않겠습니다.
실질적으로 손대야 할 이유는 용량이 아니라 관리 편의입니다. 정리 방법은 간단합니다.
1. [홈] 탭 → [조건부 서식] → [규칙 관리]를 연다.
2. 서식 규칙 표시 범위를 "현재 워크시트"로 바꿔 전체 목록을 본다.
3. 같은 조건, 같은 서식인 규칙이 여러 개 보이면
범위가 넓은 규칙 하나만 남기고 나머지를 선택 삭제한다.
4. 마지막으로 새로 하나를 만들어 전체 범위에 다시 지정한다.
규칙이 겹치면 어느 쪽이 이길까
같은 셀에 조건이 다른 규칙 두 개가 동시에 걸리는 경우도 흔합니다. "1000보다 크면 빨강"과 "1500보다 크면 파랑"을 같은 A1:A20 범위에 순서대로 추가하고, 실제로 XML에 어떻게 기록되는지 확인해 봤습니다.
<cfRule type="cellIs" priority="1" operator="greaterThan" dxfId="0"> <!-- 1000보다 크면 빨강, 먼저 추가 -->
<cfRule type="cellIs" priority="2" operator="greaterThan" dxfId="1"> <!-- 1500보다 크면 파랑, 나중에 추가 -->
먼저 추가한 규칙이 priority=1, 나중에 추가한 규칙이 priority=2로 자동 매겨집니다.
숫자가 작을수록 [규칙 관리] 창에서 목록 위쪽에 뜨고 먼저 검사되는 규칙입니다. 값이 1800인 셀처럼 두 조건을 동시에 만족하면,
뒤에 추가한 규칙(파랑)이 화면에 최종적으로 보이는 경우가 일반적입니다.
다만 정확한 겹침 결과는 각 규칙에 "참이면 다른 규칙 중지" 옵션이 켜져 있는지에 따라도 달라질 수 있어,
여러 규칙을 겹쳐 쓸 때는 [규칙 관리] 창에서 순서를 직접 눈으로 확인하는 편이 안전합니다.
규칙이 200개로 쪼개진 상황에서 이 우선순위가 중요해지는 이유가 있습니다. 복사 붙여넣기로 규칙이 계속 추가되면 priority 번호도 계속 늘어나는데, 나중에 붙여넣은 규칙일수록 우선순위가 낮아 오래된 규칙에 가려질 수 있습니다. 의도한 서식이 안 보인다면 규칙이 없는 게 아니라 순서에 밀린 것일 수 있다는 뜻입니다.
애초에 쪼개지지 않게 붙여넣는 법
규칙을 다른 범위로 옮길 때 일반 붙여넣기(Ctrl+V) 대신 서식만 붙여넣기를 골라도 결과는 똑같이 규칙이 나뉩니다. 쪼개짐을 막으려면 다음 방법이 낫습니다.
| 상황 | 방법 |
|---|---|
| 이미 만든 규칙을 더 넓은 범위로 확장 | 붙여넣지 말고 [규칙 관리]에서 범위(적용 대상)를 직접 넓게 수정 |
| 여러 표에 같은 조건을 반복 적용 | 표를 만들기 전에 전체 범위를 먼저 잡고 규칙 한 번만 지정 |
조건부 서식은 만든 뒤에 범위를 넓히는 게 아니라, 넓힐 범위를 먼저 잡고 규칙을 얹는 순서가 규칙 쪼개짐을 막는 가장 확실한 방법입니다.
자주 묻는 질문
Q. 지금 파일에 규칙이 몇 개나 있는지 바로 확인하려면?
[규칙 관리] 창의 목록 줄 수를 세거나, 아래 코드로 파일을 열지 않고도 셀 수 있습니다.
import zipfile
with zipfile.ZipFile("파일.xlsx") as z:
xml = z.read("xl/worksheets/sheet1.xml").decode("utf-8")
print("규칙 개수:", xml.count("<cfRule"))
Q. 규칙을 지웠는데 셀 배경색이 그대로입니다.
조건부 서식과 일반 채우기 색은 별개입니다. 조건부 서식을 지워도 셀에 직접 칠한 배경색은 남아 있을 수 있습니다.
위 규칙 개수별 용량은 동일한 조건으로 만든 xlsx 파일을 직접 저장하고, 압축을 풀어 시트 XML 안의 규칙 태그를 세어 얻은 값입니다.
CSV를 열었더니 주소 뒷부분이 옆 칸으로, 값 속 쉼표 때문에 열이 밀리는 문제
이름과 주소가 잘 정리돼 있던 CSV를 프로그램으로 읽었더니,주소 한 칸이 두 칸으로 쪼개지면서 그 뒤 금액까지 줄줄이 옆으로 밀려 버리는 경우가 있습니다.데이터는 멀쩡한데 표만 어긋난 것
richyeon.com
파일 이름 뒤 .jpg를 .png로 바꾸면 진짜 변환될까, 흔한 오해와 실제
이미지가 PNG여야 한다고 해서, 파일 이름 끝의 .jpg를 지우고 .png로 바꿔 본 적 있으신가요. 겉보기엔 아이콘도 바뀌고 그럴듯해 보입니다.그런데 어떤 사이트에 올리면 "형식이 맞지 않는다"며
richyeon.com
한글 폰트 하나가 13MB, 잘못 받은 게 아니라 글자 수 때문입니다
폰트를 하나 내려받았는데 파일 크기가 13MB로 찍히면 손이 멈칫하게 됩니다.글자 모양 하나 담은 파일이 사진 수십 장 분량이니 뭔가 잘못 받았나 싶어집니다. 윈도우에 이미 깔려 있는 폰트들
richyeon.com
'파일 형식 백과사전' 카테고리의 다른 글
| 내려받은 폰트가 한글을 지원하는지, 설치하기 전에 코드로 확인하는 법 (0) | 2026.08.29 |
|---|---|
| 폰트를 설치했는데 프로그램 목록에 안 보일 때, 원인을 구분하는 법 (1) | 2026.08.28 |
| 엑셀 파일이 안 열릴 때, 손상된 건지 확장자만 다른 건지 구조로 구분하기 (0) | 2026.08.25 |
| 가변 폰트(Variable Font)란, 파일 하나로 굵기가 바뀌는 원리를 열어서 확인했습니다 (0) | 2026.08.24 |
| 엑셀에는 15%로 보이는데, 파이썬으로 읽으면 왜 0.15가 나올까 (0) | 2026.08.23 |