- 최초 작성일: 1999-10-09
- 최종 수정일: 2026-09-29
- 조회수: 39 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 기발한 차트 구현
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
오늘은 기발한 차트구현 방법에 대해 설명을 드립니다.
PC-WORLD라는 미국의 컴퓨터잡지(아주 유명함!)에 Keith Hermann이라는 사람이 기고한 내용을 제가 약간 수정해서 만들어 보았습니다.
외국의 NEWS GROUP 사이트에 접속해 보면 외국인들도 엑셀에 아주 관심이 많다는 걸 알 수 있습니다. 실생활에서 영어가 universal language라면 사이버 공간에서는 엑셀(visual basic)이 또 하나의 universal language가 아닌가라는 생각이 들 정도로…
여러분들도 사고의 폭을 넓혀서 아주 기발한 아이디어들을 구체화시켜 보세요.
기발한 차트 구현
핵심 요약
- 목표와 판매의 차이를 계산한 뒤 초과와 미달을 서로 다른 열에 나눠 표시합니다.
- REPT 함수로 차이값만큼 ■ 문자를 반복하면 셀 안에서 간단한 막대 차트처럼 표현할 수 있습니다.
- IF·ROUND·ABS를 조합하면 양수와 음수를 나눠 목표 초과와 미달을 각각 시각화할 수 있습니다.
| 지점명 | 목표 | 판매 | 차액 | 목표 초과 | 목표미달 | |
| 강동 | 500 | 515 | 15 | ■■■■■■■■■■■■■■■ | ||
| 강서 | 500 | 485 | -15 | ■■■■■■■■■■■■■■■ | ||
| 강남 | 500 | 508 | 8 | ■■■■■■■■ | ||
| 강북 | 500 | 510 | 10 | ■■■■■■■■■■ | ||
| 부산동 | 500 | 492 | -8 | ■■■■■■■■ | ||
| 부산서 | 450 | 458 | 8 | ■■■■■■■■ | ||
| 부산남 | 400 | 390 | -10 | ■■■■■■■■■■ | ||
| 부산북 | 400 | 388 | -12 | ■■■■■■■■■■■■ | ||
| 대구동 | 400 | 410 | 10 | ■■■■■■■■■■ | ||
| 대구서 | 350 | 347 | -3 | ■■■ | ||
| 대전동 | 380 | 370 | -10 | ■■■■■■■■■■ | ||
| 대전남 | 400 | 413 | 13 | ■■■■■■■■■■■■■ | ||
| 광주서 | 390 | 377 | -13 | ■■■■■■■■■■■■■ | ||
| 광주동 | 350 | 360 | 10 | ■■■■■■■■■■ | ||
| 제주 | 300 | 313 | 13 | ■■■■■■■■■■■■■ |
참고: 원문에서는 목표 초과 부분(왼쪽)을 파란색, 목표 미달 부분(오른쪽)을 빨간색 네모로 표시한다고 설명하지만 이 페이지의 표에는 글꼴 색이 반영되어 있지 않습니다. 수식의 E16은 원문 워크시트에서 차액이 들어 있는 셀 주소이며(이 페이지의 표에는 행 번호가 없습니다), 표의 차액과 네모의 개수는 모두 일치합니다.
자료에서와 같이 각 지점별로 목표와 판매금액, 그리고 그 차액이 있는데, 차액 부분을 차트로 구현한 것입니다. 목표 초과달성점은 좌측 부분에 파란색 네모로, 미달점은 우측 부분에 빨간색 네모의 개수로 표시를 한 것이지요.
수식은 예상외로 아주 간단합니다.
<목표 초과 부분>
=IF(E16>=0,REPT("■",ROUND(E16,0)),"")
if()함수와 round()함수는 다들 아실테고, rept()함수는 지정한 문자열을 지정한 개수만큼 반복해 주는 함수입니다. 즉 rept("a",10)이라고 하면 aaaaaaaaaa와 같이 표시되지요.
<목표 미달 부분>
=IF(E16<0,REPT("■",ROUND(ABS(E16),0)),"")
<목표 초과 부분>과 차이점이 있다면 abs()함수를 써서 한번더 가공해 준 것이지요.
abs()함수는 해당값의 절대값을 구해주는 함수입니다. Abs(-100)이라고 하면 앞의 minus 부호는 떼어 버리고 양수값을 돌려주는 것입니다.
어떻습니까? 아주 기발하지요?
다음 시간에 또…
정리 — 기발한 차트 구현
| 구분 | 내용 |
|---|---|
| 주제 | REPT 함수로 차액을 네모 문자의 개수로 표시하는 차트 |
| 목표 초과 | IF, REPT, ROUND 함수로 차액이 0 이상이면 차액의 개수만큼 네모를 표시 |
| 목표 미달 | 차액이 0보다 작으면 ABS 함수로 절대값을 구해 그 개수만큼 네모를 표시 |
| REPT | 지정한 문자열을 지정한 개수만큼 반복하는 함수 |
| ABS | 해당 값의 절대값을 구하는 함수 |
| 출처 | PC-WORLD에 Keith Hermann이 기고한 내용을 약간 수정 |
자주 묻는 질문 (FAQ)
Q1. 차액을 차트처럼 표시하려면 어떻게 하나요?
REPT 함수로 네모 문자를 차액의 크기만큼 반복해서 표시합니다. 목표를 초과한 지점은 왼쪽에, 미달한 지점은 오른쪽에 나타납니다.
Q2. REPT 함수는 무엇을 하나요?
지정한 문자열을 지정한 개수만큼 반복해 주는 함수입니다. 예를 들어 문자 a와 개수 10을 지정하면 aaaaaaaaaa와 같이 표시됩니다.
Q3. 미달 부분의 수식은 초과 부분과 무엇이 다른가요?
차액이 0보다 작을 때만 표시하고, ABS 함수로 절대값을 구해 음수 부호를 뗀 값을 개수로 사용한다는 점이 다릅니다.
마치며
차트를 만들기 번거로울 때는 REPT 함수로 셀 안에 간단한 막대를 그려 보시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.