- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 엑셀 차트에서 범례(legend)가 사라졌을 때 발생 가능한 원인을 체계적으로 진단하고, 사용자 인터페이스(UI) 조작, 서식 옵션, 데이터 모델 점검, VBA 스크립트, 피벗 차트 특수 이슈까지 단계별로 해결하는 방법을 제공하는 것이다.
1. 문제 정의와 증상 분류
범례는 데이터 계열의 식별자를 표시하여 그래프 해석을 돕는 핵심 요소이다. 다음과 같은 증상이 보고되곤 한다.
- 차트 내 범례가 완전히 보이지 않는 증상이다.
- 범례 상자가 보이지만 일부 계열만 보이거나 항목 순서가 뒤바뀌는 증상이다.
- 피벗 차트에서 필터를 적용하면 범례가 비거나 위치가 초기화되는 증상이다.
- 차트 서식 템플릿(.crtx) 적용 후 범례가 일괄적으로 숨김 처리되는 증상이다.
2. 원인-조치 매핑 요약표
| 주요 원인 | 설명 | 즉시 조치 |
|---|---|---|
| 차트 요소에서 범례 숨김 | 차트 요소 추가 기능에서 범례 체크가 해제되어 있음 | 차트 선택 → 차트 요소(+) → 범례 체크한다 |
| 빠른 레이아웃 또는 차트 스타일 변경 | 빠른 레이아웃/스타일이 범례를 포함하지 않는 구성 | 차트 디자인 → 빠른 레이아웃에서 범례 포함 레이아웃 선택한다 |
| 계열 이름 비어 있음 | 계열 이름(범례 텍스트)이 빈 셀 또는 공백 문자를 참조 | 데이터 선택 → 범례 항목(계열)에서 계열 이름을 적절히 지정한다 |
| 숨긴 행/열 데이터 | 계열이 숨겨진 행/열에 존재하여 표시 제외 | 차트 우클릭 → 데이터 선택 → 숨긴 셀 및 빈 셀 설정에서 숨긴 행과 열의 데이터 표시 체크한다 |
| 필터·슬라이서로 계열 0개 | 필터 결과 남은 계열이 없거나 단일 계열로 수렴 | 필터 해제 또는 최소 2개 이상 계열이 남도록 범위를 조정한다 |
| 차트 영역-플롯 영역 충돌 | 범례가 플롯 영역에 가려짐 또는 영역 밖으로 밀려남 | 서식 → 플롯 영역 크기 축소 또는 범례 위치를 오른쪽/아래로 변경한다 |
| 차트 템플릿(.crtx) 문제 | 템플릿에 HasLegend=False 상태가 저장됨 | 템플릿 재저장 전 범례=표시로 설정 후 다시 저장한다 |
| 피벗 차트 레이아웃 초기화 | 피벗 갱신 시 레이아웃과 필드 배치가 초기화 | 피벗차트 도구에서 항목 배치 고정, 업데이트 시 레이아웃 유지 옵션 점검한다 |
| 호환성 모드 | .xls 등 구형 형식으로 저장되어 차트 옵션 제한 | .xlsx로 저장 후 차트 다시 구성한다 |
| 글꼴·테마 색 문제 | 범례 텍스트가 배경과 동일한 색상 | 범례 서식에서 텍스트 색상과 채우기 색을 재지정한다 |
3. 단계별 복구 절차(기본)
3.1 UI로 범례 표시 복원
- 차트를 클릭하여 선택한다.
- 차트 우상단의 차트 요소(+, 녹색 버튼)을 누른다.
- 범례 체크를 활성화한다.
- 옆의 화살표를 눌러 오른쪽, 위, 아래, 왼쪽 등 위치를 선택한다.
3.2 빠른 레이아웃/스타일로 범례 포함 템플릿 적용
- 차트 디자인 탭 → 빠른 레이아웃을 선택한다.
- 범례가 포함된 레이아웃을 선택한다.
- 또는 차트 스타일에서 범례 포함 스타일로 변경한다.
3.3 데이터 선택에서 계열 이름 점검
- 차트 우클릭 → 데이터 선택을 클릭한다.
- 범례 항목(계열) 목록에서 각 계열을 선택하고 편집을 누른다.
- 계열 이름에 올바른 셀 참조(일반적으로 헤더 셀)를 지정한다.
- 공백 문자만 들어간 셀을 참조하지 않도록 주의한다.
3.4 숨긴 셀·빈 셀 설정
- 차트 우클릭 → 데이터 선택 → 좌하단 숨긴 셀 및 빈 셀 설정을 클릭한다.
- 숨긴 행과 열의 데이터 표시 체크박스를 활성화한다.
- 필요 시 빈 셀 표시를 연결 데이터로 표시로 설정한다.
3.5 범례가 가려질 때 레이아웃 재조정
- 범례를 클릭하여 범례 서식 창을 연다.
- 범례 옵션에서 위치를 오른쪽 또는 아래로 지정한다.
- 플롯 영역을 클릭 → 모서리 핸들로 크기를 축소하여 범례 공간을 확보한다.
4. 데이터·차트 모델 점검(중급)
4.1 계열 개수와 범례 표시 조건
상황에 따라 단일 계열로 구성된 차트는 범례가 자동으로 생략되기도 한다. 이해를 돕기 위해 차트 유형별 기본 동작을 요약한다.
| 차트 유형 | 단일 계열 범례 | 다중 계열 범례 | 특기사항 |
|---|---|---|---|
| 세로/가로 막대형 | 생략될 수 있음 | 표시 | 범주 수가 많으면 범례보다 데이터 레이블 추천이다 |
| 꺾은선형 | 생략될 수 있음 | 표시 | 마커 유무에 따라 가독성 변화가 크다 |
| 영역형 | 생략될 수 있음 | 표시 | 누적형은 색 대비 확보가 중요하다 |
| 원형/도넛형 | 표시 | 표시 | 범례가 항목명일 수 있으므로 데이터 레이블과의 중복에 유의한다 |
| 콤보형 | 표시 | 표시 | 보조축 사용 시 범례 정렬을 확인한다 |
| 피벗 차트 | 상황 의존적 | 표시 | 갱신 시 레이아웃 유지 옵션을 확인한다 |
4.2 범례 텍스트의 공백·숨김 문자 제거
셀 내 공백이나 제어문자는 범례 공란처럼 보이게 할 수 있다. 다음 수식으로 정리한다.
=TRIM(CLEAN(SUBSTITUTE(A1,CHAR(160)," "))) 위 수식으로 정리한 표시용 이름 열을 만든 뒤, 계열 이름 참조를 해당 열로 재설정한다.
4.3 동적 범위 차트와 범례 싱크
OFFSET 또는 테이블 참조로 계열이 동적으로 변할 때 범례가 일부 비는 경우가 있다. 다음 원칙을 따른다.
- 동적 범위가 최소 1개 이상의 유효 데이터 포인트를 항상 포함하도록 기본값을 둔다.
- 계열 이름은 고정 셀을 참조하고, 데이터 범위만 동적으로 참조한다.
- 테이블 구조화 참조를 사용할 때 열 머리글 변경이 범례에 반영되도록 계열 이름을 머리글 셀에 직접 연결한다.
5. 피벗 차트 특수 이슈
5.1 슬라이서·타임라인 적용 시 범례 공백
슬라이서로 필터가 과도하게 적용되면 남는 계열이 0개가 되어 범례가 비어 보인다. 최소 1개 이상의 계열이 항상 남도록 기본 필터를 설계한다.
5.2 피벗 갱신 시 레이아웃 초기화 방지
- 피벗 차트를 선택한다.
- 피벗차트 분석 → 갱신 옵션에서 레이아웃 유지 항목을 확인한다.
- 필드 배치가 바뀌지 않도록 행/열/범례 필드 위치를 명확히 고정한다.
6. 서식 템플릿·호환성 이슈
6.1 .crtx 템플릿 재정의
- 새 차트를 임시로 만든다.
- 범례를 표시 상태로 설정하고 위치를 지정한다.
- 차트 디자인 → 템플릿으로 저장을 눌러 기존 템플릿을 덮어쓴다.
6.2 호환성 모드 전환
.xls 등 구형 형식으로 저장된 통합 문서는 차트 옵션이 제한될 수 있다. 파일 → 다른 이름으로 저장 → 형식을 .xlsx 또는 .xlsm으로 선택하여 저장하고 차트를 재검토한다.
7. 색·테마로 인한 범례 미가시화
범례 텍스트 색과 배경색이 유사하면 사라진 것처럼 보인다. 다음을 점검한다.
- 범례 선택 → 도형 서식 → 텍스트 옵션에서 텍스트 채우기 색상을 명확히 대비되도록 지정한다.
- 도형 채우기를 없음 또는 대비되는 색으로 설정한다.
- 테마를 변경한 경우 페이지 레이아웃 → 테마에서 색을 표준 테마로 복귀 후 확인한다.
8. 자동화: VBA로 범례 일괄 복구
여러 차트에서 범례가 동시에 사라졌다면 VBA로 일괄 복구하는 것이 효율적이다. 다음 코드를 Alt+F11 → 삽입 → 모듈에 붙여넣고 실행한다.
' 모든 워크시트의 모든 차트에 범례 표시 및 위치 설정 Sub ShowLegendsAllCharts() Dim ws As Worksheet Dim co As ChartObject For Each ws In ActiveWorkbook.Worksheets For Each co In ws.ChartObjects With co.Chart .HasLegend = True .Legend.Position = xlLegendPositionRight End With Next co Next ws End Sub 차트 시트(Chart Sheet)에 대해서도 처리하려면 다음을 추가한다.
Sub ShowLegendsChartSheets() Dim cs As Chart For Each cs In ActiveWorkbook.Charts cs.HasLegend = True cs.Legend.Position = xlLegendPositionBottom Next cs End Sub 9. 자동화: 계열 이름 대량 복원
범례의 텍스트는 계열 이름에 의존한다. 다음 코드는 계열 이름이 비어 있을 때 기본 헤더 셀을 참조해 자동 지정한다. 데이터 배열은 1행에 헤더, 아래로 값 구조를 가정한다.
' 활성 차트의 각 계열 이름을 헤더 셀로 자동 지정 Sub FixSeriesNamesFromHeader() Dim ch As Chart Dim s As Series Set ch = ActiveChart If ch Is Nothing Then MsgBox "차트를 먼저 선택한다." Exit Sub End If For Each s In ch.SeriesCollection If Len(s.Name) = 0 Or s.Name Like "Series*" Then On Error Resume Next s.Name = "=" & s.XValues.Parent.Parent.Name & "!" & s.XValues(1).Offset(-1, 0).Address On Error GoTo 0 End If Next s End Sub 10. 인쇄·페이지 레이아웃 상호작용
페이지 여백, 배율 조정, 한 페이지에 맞추기가 차트 크기를 변경하여 범례가 잘리는 경우가 있다. 다음 절차로 검증한다.
- 페이지 레이아웃 보기에서 차트의 경계와 범례 위치를 확인한다.
- 페이지 설정 → 배율을 100%로 맞춘 뒤 범례 표시를 확인한다.
- 필요 시 차트의 크기를 수동 조정 후 배율을 다시 적용한다.
11. 복구 체크리스트
- 차트 요소에서 범례 체크를 켰는가 확인한다.
- 빠른 레이아웃 또는 차트 스타일이 범례 포함인지 확인한다.
- 각 계열의 이름이 비어 있지 않은가 확인한다.
- 숨긴 행/열 데이터 표시가 필요한가 확인한다.
- 필터 또는 슬라이서로 계열이 0개가 되지 않았는가 확인한다.
- 플롯 영역이 범례 공간을 침범하지 않는가 확인한다.
- .crtx 템플릿의 HasLegend 상태를 점검한다.
- .xlsx 형식으로 저장되어 있는가 확인한다.
- 테마 색 대비가 충분한가 확인한다.
12. 고급 문제 해결 시나리오
12.1 콤보 차트와 보조축
보조축을 사용하는 콤보 차트에서 일부 계열이 범례에 누락될 경우, 다음을 확인한다.
- 보조축 계열과 주축 계열이 동일한 차트 영역에서 렌더링되는지 확인한다.
- 계열 서식에서 계열 옵션 → 가로/세로 축 배치가 올바른지 점검한다.
12.2 사용자 지정 레이블과 범례 중복
데이터 레이블을 범례처럼 활용하면 범례가 가시성 면에서 필요 없어질 수 있으나, 일관성 유지를 위해 범례를 유지하는 것이 권장된다. 레이블을 축약하고 범례에 정식 명칭을 유지한다.
12.3 매크로 보안·추가기능 상호작용
일부 추가기능이 차트 생성 시 템플릿을 강제 적용할 수 있다. 문제 재현 시 추가 기능을 비활성화하여 재시험하고, 정상 동작 확인 후 충돌 Add-in을 분리한다.
13. 표준 운영 절차(SOP) 예시
1) 차트를 클릭 → 차트 요소에서 범례 켠다 2) 빠른 레이아웃/스타일 재적용하여 범례 포함 구성으로 전환한다 3) 데이터 선택 → 각 계열 이름을 유효한 헤더 셀로 지정한다 4) 숨긴 셀 및 빈 셀 설정에서 숨긴 행·열 데이터 표시를 허용한다 5) 플롯 영역 크기를 줄이고 범례 위치를 오른쪽 또는 아래로 지정한다 6) 피벗 차트라면 필터·필드 배치를 점검하고 레이아웃 유지 옵션을 적용한다 7) .crtx 템플릿을 재저장하여 HasLegend=True 상태를 기준으로 표준화한다 8) 그래도 안 되면 VBA 일괄 복구 스크립트를 실행한다 14. 품질 보증 체크(배포 전)
| 검사항목 | 합격 기준 | 판정 |
|---|---|---|
| 범례 표시 여부 | 모든 대상 차트에서 범례가 보임 | Pass/Fail |
| 범례 텍스트 정확성 | 계열 이름과 일치, 오탈자 없음 | Pass/Fail |
| 색 대비 | WCAG 준수 수준의 대비 확보 | Pass/Fail |
| 인쇄 프리뷰 | 페이지 배율 변경 시 범례 유지 | Pass/Fail |
| 피벗 갱신 내구성 | 데이터 갱신 후 범례 유지 | Pass/Fail |
| 템플릿 일관성 | .crtx 재적용 시 범례 유지 | Pass/Fail |
FAQ
단일 계열 차트인데도 범례를 강제로 보이게 할 수 있나?
가능하다. 차트 요소에서 범례를 활성화하거나 VBA로 ActiveChart.HasLegend=True를 실행한다. 다만 가독성 측면에서 단일 계열은 데이터 레이블이 더 효율적일 수 있다.
범례 항목 순서를 바꾸려면 어떻게 하나?
데이터 선택 → 범례 항목(계열) 목록에서 위/아래 화살표로 순서를 조정한다. VBA에서는 SeriesCollection(i) 순서를 재구성한다.
범례 글꼴 크기와 줄 바꿈은 어디서 조정하나?
범례 선택 → 홈 탭 또는 도형 서식의 텍스트 옵션에서 글꼴 크기·굵기를 조정한다. 항목이 길면 줄 바꿈 대신 약칭을 권장한다.
범례가 인쇄 시만 사라지는 경우 대처는?
페이지 레이아웃에서 배율을 100%로 설정해 테스트하고, 차트 크기를 약간 줄여 범례 영역이 잘리지 않게 조정한다.
피벗 차트에서 필터를 바꾸면 범례가 비는 이유는?
필터 결과 계열이 0개 또는 1개만 남아 범례가 생략되기 때문이다. 최소 2개 이상의 계열이 남도록 필드 구성을 조정한다.