Saturday, February 7th, 2026

엑셀이 느려지는 이유, 범인은 ‘예쁜 쓰레기’ 조건부 서식? REPT 함수로 성능과 디자인 모두 잡는 법

직장인이라면 누구나 “엑셀 파일이 왜 이렇게 무겁지?”라는 고민을 해보셨을 겁니다. 데이터가 수천 행을 넘어가기 시작하면 스크롤은 뚝뚝 끊기고, 셀 하나를 수정할 때마다 ‘계산 중…’ 메시지가 뜨며 멈칫거립니다.

대부분의 원인은 수식의 복잡도가 아니라, **과도한 ‘조건부 서식(Conditional Formatting)’**에 있습니다. 특히 우리가 즐겨 쓰는 **’데이터 막대(Data Bar)’**는 시각적으로는 훌륭하지만, 엑셀의 렌더링 엔진에 엄청난 부하를 주는 주범입니다.

엑셀이 느려지는 이유, 범인은 '예쁜 쓰레기' 조건부 서식? REPT 함수로 성능과 디자인 모두 잡는 법

오늘은 화려하지만 무거운 조건부 서식을 걷어내고, REPT 함수와 **유니코드(Unicode)**를 활용해 가볍고 빠르면서도 전문적인 **’셀 내 차트(In-cell Chart)’**를 만드는 4가지 고급 기법을 심층 분석합니다.

1. 조건부 서식의 함정: “Rule Rot” 현상과 렌더링 렉

엑셀의 조건부 서식은 그래픽 레이어(Graphic Layer)에서 작동합니다. 즉, 데이터가 변경될 때마다 엑셀은 수치 계산뿐만 아니라 화면상의 그래픽을 실시간으로 다시 그려야(Redraw) 합니다.

  • 규칙의 부패 (Rule Rot): 데이터를 복사하고 붙여넣는 과정에서 조건부 서식 규칙은 기하급수적으로 늘어납니다. 같은 규칙이 수백 개로 쪼개져 메모리를 잠식하는 이 현상을 전문가들은 ‘Rule Rot’라고 부릅니다.
  • 성능 저하: 수천 개의 셀에 적용된 그래픽 효과는 파일 용량을 키우고 반응 속도를 떨어뜨립니다.

해결책은 REPT 함수입니다. 이 함수는 텍스트를 반복 출력합니다. 엑셀 입장에서 이것은 그래픽이 아니라 단순한 **’문자열(String)’**일 뿐입니다. 계산 부하가 거의 ‘0’에 수렴합니다.

2. Technique 1: 고전적 방식, 파이프(|) 막대 그래프

가장 기초적인 방법입니다. 키보드의 파이프 기호(|)를 반복하여 막대처럼 보이게 만듭니다.

  • 핵심 원리: 일반 폰트를 쓰면 막대가 끊어져 보입니다. **’Playbill’**이나 ‘Britannic Bold’ 폰트를 사용하면 자간이 좁혀져 마치 하나의 굵은 막대처럼 연결되어 보입니다.
  • 사용 공식:Excel=REPT("|", [@[점수]]*5) (점수가 1~10점일 때, *5를 해주어 시각적 가시성을 높이는 것이 팁입니다.)

3. Technique 2: 프로의 기술, 상대적 비율 시각화 (Normalization)

데이터의 범위가 100에서 10,000까지 들쑥날쑥하다면 어떻게 해야 할까요? 단순 반복하면 셀 밖으로 텍스트가 넘쳐버립니다. 이때 필요한 것이 **’정규화(Normalization)’**입니다.

  • 준비물: 폰트는 반드시 ‘Consolas’ 같은 **고정폭 글꼴(Monospaced Font)**을 써야 비율이 정확합니다. 그리고 유니코드 문자 9608 (꽉 찬 네모, █)을 사용합니다.
  • 고급 공식:Excel=REPT(UNICHAR(9608), ([@[판매량]]/MAX([판매량]))*20)
  • 해설:
    1. [판매량]/MAX([판매량]): 현재 값을 전체 최댓값으로 나누어 0~1 사이의 비율(%)로 만듭니다.
    2. *20: 이 비율에 20을 곱해, 막대의 최대 길이를 20글자로 고정합니다. (셀 너비에 맞춰 이 숫자를 조절하세요.)

이 방식을 쓰면 데이터양이 아무리 많아도, 1등은 항상 꽉 찬 막대로, 나머지는 그에 비례한 길이로 깔끔하게 정렬됩니다. 대시보드 제작 시 필수적인 테크닉입니다.

4. Technique 3: UI 디자인의 정점, 프로그레스 바 (Progress Bar)

프로젝트 진행률을 보여줄 때, 단순히 채워진 막대만 보여주는 것은 아마추어입니다. 남은 공간을 흐릿한 음영으로 채워주는 **’트랙(Track)’**이 있어야 진짜 프로그레스 바입니다.

  • 디자인: 채워진 부분은 (9608), 남은 부분은 (9617)을 사용합니다.
  • 고급 공식:Excel=REPT(UNICHAR(9608), ROUND([@진행률]*10, 0)) & REPT(UNICHAR(9617), 10-ROUND([@진행률]*10, 0))
  • 해설:
    1. 채움: 진행률(%)에 10을 곱해 채워질 블록 수를 구합니다. ROUND 함수로 정수화하는 것이 에러 방지의 핵심입니다.
    2. 연결(&): 앰퍼샌드(&)로 두 문자열을 본드처럼 붙입니다.
    3. 배경: 전체 길이(10)에서 채워진 길이를 뺀 만큼 흐린 블록을 반복합니다.

이 수식의 장점은 진행률이 10%든 90%든 문자열의 총길이가 항상 10글자로 고정된다는 점입니다. 덕분에 열 너비가 흔들리지 않고 레이아웃이 견고하게 유지됩니다.

5. Technique 4: 별점 시스템 (Star Rating)

쇼핑몰 리뷰 데이터나 난이도, 중요도를 표현할 때 숫자(4.5)보다는 별점(★★★★☆)이 훨씬 직관적입니다.

  • 준비물: 유니코드 지원이 강력한 ‘Segoe UI Symbol’ 폰트를 추천합니다.
  • 고급 공식:Excel=REPT(UNICHAR(9733), [@별점])
  • 응용 팁:
    • UNICHAR(9733): 검은 별 (★)
    • UNICHAR(9679): 원형 점 (●) – 깔끔한 모던 디자인 선호 시 추천
    • UNICHAR(9670): 다이아몬드 (♦)

결론: 가벼움이 곧 경쟁력이다

조건부 서식은 분명 클릭 몇 번으로 적용할 수 있는 편리한 도구입니다. 하지만 데이터 분석가나 대시보드 설계자라면, 편의성 뒤에 숨겨진 **’성능 비용(Performance Cost)’**을 항상 고려해야 합니다.

오늘 소개한 REPT 함수 기법은 초기 세팅에 약간의 수식이 필요하지만, 그 결과물은 놀랍도록 가볍고 빠릅니다.

  • 파일 용량 다이어트
  • 스크롤 렉 제거
  • 버전 호환성 확보

이 세 마리 토끼를 모두 잡고 싶다면, 지금 바로 여러분의 엑셀에서 조건부 서식을 지우고 REPT 함수를 적용해 보십시오. 동료들이 “어떻게 엑셀이 이렇게 빠르고 깔끔하냐”고 물어볼 것입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다