오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
엑셀 차트 강의

엑셀 지도 차트 만들기

오빠두엑셀 by 오빠두엑셀
  • 학습시간 20분
  • 난이도 초급
  • 작성일 2020.08.25

COVID-19 코로나 지역별 실시간 발생 현황을 엑셀 지도 차트로 쉽고 빠르게 만드는 방법

이번 강의에서는 엑셀의 지도 차트 기능과 연결된 이미지 기법을 활용해 코로나19 시·도별 발생 현황 대시보드를 직접 제작하는 과정을 다룹니다. 중앙재난안전대책본부에서 제공하는 원본 데이터를 가공해 지도 차트로 시각화하고, 매크로로 지역별 레이블까지 한 번에 만드는 워크플로를 단계별로 익혀봅니다.

엑셀 지도 차트 만들기
DOWNLOADS

실습자료를 준비했어요

수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇

강의 소개

이번 강의에서는 중앙재난안전대책본부에서 공개하는 코로나 바이러스 발생 현황 원본 데이터를 활용하여 대한민국 시·도별 코로나 발생 현황을 지도 차트로 시각화하는 방법을 알아봅니다. 엑셀 기본 기능만으로 중앙재난안전대책본부에서 제공하는 지도 차트 양식과 동일한 결과물을 제작할 수 있습니다.

코로나 발생 현황 대시보드 맵차트

본 강의의 지도 차트는 아래 링크를 참고하여 제작되었습니다.

지도 차트에 사용되는 코로나 바이러스 지역별 발생 현황 원본 데이터는 아래 링크에서 확인할 수 있습니다. 링크로 이동한 뒤 페이지에 표시된 표를 복사하여 예제파일 [Raw] 시트의 [시도별 발생동향] 표 위에 붙여넣으면 [데이터] 시트의 값이 자동으로 업데이트됩니다.

코로나 발생 현황 원본 데이터 링크

이번 강의에서 사용하는 지도 차트 기능은 엑셀 2019 이후 버전에서만 지원됩니다. 엑셀 2019 이전 버전을 사용한다면 이번 단계를 건너뛰고 다음 단계부터 진행합니다.

  1. 예제파일의 [데이터] 시트로 이동한 뒤 [B6:D23] 범위(시도명~누적환자)를 선택합니다. 이어서 [삽입] - [차트] - [추천 차트]를 클릭하거나 단축키 Alt - N - R로 추천 차트 대화상자를 실행합니다.

    지도 차트 생성 범위 선택

  2. 추천 차트 목록에서 '지도 차트'를 선택한 뒤 [확인] 버튼을 눌러 지도 차트를 생성합니다. 추천 차트 목록에 지도 차트가 보이지 않을 경우 [모든 차트] - [지도]로 이동하여 차트를 생성합니다.
    엑셀 지도 차트 만들기
  3. 차트 제목과 범례를 지워 차트를 간소화합니다. 이어서 차트의 지도 범위를 우클릭하여 [데이터 계열 서식]으로 이동한 뒤 [계열 색] - [분기 3색]을 선택합니다.

    차트 계열 분기 3색

  4. 현재 데이터에서는 '대구'의 값이 6,930으로 월등히 높기 때문에 최댓값과 최솟값을 기준으로 차트 색상을 표시하면 대구 지역만 진하게 강조되는 문제가 발생합니다. 따라서 전체 분포를 자연스럽게 표현할 수 있도록 최댓값·중간값·최솟값을 직접 지정합니다.
    최소값 : [숫자] 50
    중간값 : [숫자] 800
    최대값 : [숫자] 2000

    지도 차트 불균형 데이터

    지도차트 데이터 계열 값 변경

  5. 최댓값은 진한 파란색, 중간값은 하늘색, 최솟값은 옅은 회색으로 채우기 색상을 변경합니다.

    엑셀 지도 차트 색상 변경

  6. 지도 차트가 완성되었습니다. 완성된 차트를 잘라낸 뒤 [코로나 대시보드] 시트로 붙여넣기합니다. 기존 대시보드 시트에 있는 안내 문구와 물음표 아이콘을 우클릭한 뒤 [맨 앞으로 가져오기]를 선택해 차트 위에 표시되도록 위치를 조정합니다.
    안내 문구 맨 앞으로 가져오기
  7. 차트의 윤곽선을 제거하면 대시보드 위에 지도 차트 삽입이 완료됩니다.

    지도 차트 완성

엑셀 2019 이전 버전에서는 지도 차트 기능을 지원하지 않습니다. 따라서 2019 이전 버전 사용자는 [코로나 대시보드] 시트에 미리 준비된 지도 그림 이미지를 잘라낸 뒤 같은 위치에 붙여넣어 지도 차트 대용으로 활용합니다.

엑셀 2019 이전 버전 지도 그림 사용

  1. 시트 목록 오른쪽의 (+) 더하기 버튼을 클릭하거나 단축키 Shift + F11키로 새 시트를 추가합니다.

    새 시트 추가하기

  2. [B2:S4] 범위를 선택한 뒤 아래 수식을 입력하고 Ctrl + Shift + Enter로 배열 수식을 입력합니다. (Microsoft 365 사용자는 B2 셀을 선택한 뒤 아래 수식을 Enter로 입력하면 파란색 테두리와 함께 배열 결과가 자동으로 반환됩니다.)

    transpose 범위 선택

  3. 각 범위에 폰트를 깔끔하게 적용한 뒤 범위 채우기 색상을 흰색으로 변경합니다. 강의에서는 Noto Sans(본고딕) 폰트를 사용했습니다.
  4. [B4:S4] 범위(신규 확진자 수)를 선택한 뒤 [우클릭] - [셀 서식]을 선택하거나 단축키 Ctrl + 1을 눌러 셀 서식 대화상자를 실행합니다. [사용자 지정]을 선택한 뒤 형식 입력란에 아래 서식을 복사·붙여넣기하고 [확인]을 눌러 셀 서식을 적용합니다.
    (+0);;(0);

    셀 서식 변경하기

  5. 연결된 이미지로 만들 지역별 발생 현황 레이블이 완성되었습니다. 첫 번째 값인 '대구' 범위를 선택한 후 Ctrl + C 로 복사합니다.

    첫번째 범위 복사

  6. B6 셀을 선택한 뒤 우클릭하여 [선택하여 붙여넣기] - [연결된 그림]으로 삽입하면 복사한 범위가 이미지 형태로 삽입됩니다. 이 과정을 18번 반복해 모든 지역의 연결된 이미지를 만들 수도 있지만, 반복 작업을 최소화하기 위해 아래 매크로를 사용하여 연결된 이미지를 한 번에 삽입할 수 있습니다.

    연결된 그림 붙여넣기

  1. 이전 단계에서 삽입했던 연결된 그림을 모두 삭제합니다. 화면 상단의 [개발 도구] - [Visual Basic]을 클릭하거나 단축키 Alt + F11을 눌러 매크로 편집기를 실행합니다.

    개발도구 visual basic 이동

  2. [삽입] - [모듈]을 선택하여 새 모듈을 추가한 뒤 아래 명령문을 복사하여 붙여넣습니다.
    '---------- 2024년 8월, M365 기준 클립보드 오류를 수정한 버전입니다 ---------------
    #If VBA7 Then
        Private Declare PtrSafe Function AccessibleChildren Lib "oleacc" (ByVal paccContainer As Office.IAccessible, _
        ByVal iChildStart As Long, ByVal cChildren As Long, _
        ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
        Public Const myVBA7 As Long = 1
    #Else
        Private Declare Function AccessibleChildren Lib "oleacc" (ByVal paccContainer As Office.IAccessible, _
                                                                  ByVal iChildStart As Long, ByVal cChildren As Long, _
                                                                  ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
        Public Const myVBA7 As Long = 0
    #End If
     
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As Long
    Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long
    Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
     
    Sub ClearClipboard()
        ' 클립보드 열기
        If OpenClipboard(0&) Then
            ' 클립보드 비우기
            EmptyClipboard
            ' 클립보드 닫기
            CloseClipboard
        End If
    End Sub
     
    Sub CreateLinkedImage()
     
    Dim rng As Range
    Dim WS As Worksheet
    Dim sFormula As String
    Dim pic As Shape
    Dim j As Long: j = 1
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
     
    Set WS = ActiveSheet
    Set rng = WS.Range("B2").CurrentRegion '<- 연결된 이미지를 생성할 데이터가 시작되는 셀 주소를 입력하세요
     
    With WS
        For i = rng.Column To rng.Column + rng.Columns.Count - 1
        .Range(.Cells(rng.Row, i), .Cells(rng.Row + rng.Rows.Count - 1, i)).Copy
        .Cells(rng.Row + rng.Rows.Count + 1, i).Select
        .Pictures.Paste Link:=True
        Set pic = WS.Shapes(j): j = j + 1
        Application.CutCopyMode = False
        ClearClipboard
        EvRClearOfficeClipBoard
     
        sFormula = pic.DrawingObject.Formula
        .Shapes.Range(Array(pic.Name)).Select
        Selection.Formula = "='" & WS.Name & "'!" & Trim(sFormula)
        Next
    End With
     
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
     
    End Sub
     
    Public Sub EvRClearOfficeClipBoard()
     
        Dim cmnB, IsVis As Boolean, j As Long, Arr As Variant
        Arr = Array(4, 7, 2, 0)                      '4 and 2 for 32 bit, 7 and 0 for 64 bit
        Set cmnB = Application.CommandBars("Office Clipboard")
        IsVis = cmnB.Visible
        On Error Resume Next
        If Not IsVis Then
            cmnB.Visible = True
            DoEvents
        End If
     
        For j = 1 To Arr(0 + myVBA7)
            AccessibleChildren cmnB, Choose(j, 0, 3, 0, 3, 0, 3, 1), 1, cmnB, 1
        Next
     
        cmnB.accDoDefaultAction CLng(Arr(2 + myVBA7))
     
        Application.CommandBars("Office Clipboard").Visible = IsVis
     
    End Sub
  3. 매크로 편집기 상단의 재생 버튼을 클릭하거나 단축키 F5키를 눌러 명령문을 실행하면 각 지역별 발생 현황 레이블을 한 번에 생성할 수 있습니다.

    매크로 편집기 실행

  1. 생성된 연결 이미지를 모두 선택하여 잘라낸 뒤 [코로나 대시보드] 시트에 붙여넣기합니다.

    연결된 그림 대시보드 위 붙여넣기

  2. 각 지역에 맞춰 레이블을 하나씩 이동합니다. 해외 감염자는 대시보드 아래쪽 도형 위에 배치합니다.

    지도 차트 위 레이블 추가

  3. 감염자 수에 따라 레이블 크기를 조절하면 대한민국 코로나 발생 현황 지도 차트가 완성됩니다.

    엑셀 지도 차트 완성

댓글 25
5 (13개 평가)
오일깜
오일깜 2020.08.25 20:54
상상 그이상에 강의 입니다!!
실무로 물품 지역별 분배(안) 작성하면서 매번 엑셀로 계산해서
한글로 편집하여 표로 완성 했었는데....
이제 한번(엑셀)에 작성 도전해보겠습니다.
매크로도 점점 흥미가 생기는데 아직은 어렵기만 하네요.
쉽고 명쾌한 강의와 예제파일 항상 감사합니다.
Myung
Myung 2020.08.26 08:27
캬.. 감사합니다!
neokimy2k
neokimy2k 2020.08.26 10:15
꼭 필요한 내용 덕분에 잘 배웠습니다. 고맙습니다.
ki72****
ki72**** 2020.09.01 11:16
재미있게 따라가고 있습니다.
사랑채
사랑채 2020.10.18 20:05
안녕하세요?
엑셀365 추천 차트에 한국이 나오지 않는데, 어떻게 하나요?
화랑
화랑 2021.07.10 14:21
혹시 2019 미만 버전인 경우 연동값을 다른테이블로 설정해서 맵챠트화는 안되는거죠? ㅠㅠ
오빠두엑셀
오빠두엑셀 작성자 2021.07.10 23:47
안녕하세요.
네 2019 이전버전(맵차트가 지원되지 않는 버전) 에서는
배경그림(지도)와 데이터 범위를 직접 변경해주셔야 합니다.
정세미
정세미 2021.08.09 14:58
왜 예제파일은 간트차트일까요? 영상보면서 따라만드는데 잘 안되서 예제파일을 확인해보고싶습니다 ㅜㅜ
오빠두엑셀
오빠두엑셀 작성자 2021.08.10 21:02
앗..! 죄송합니다.
파일이 잘못 업로드 되어 있었네요 ㅜㅜ
방금 파일을 수정해드렸으니 다시 확인해보시겠어요?
엑셀초보
엑셀초보 2022.05.12 10:58
안녕하세요. 수고많으십니다.
화면설명시에 '시/도' 까지만 가능하고 '서울시 ㅇㅇ구'는 안된다고 하셨는데요.
엑셀 도움말에서 보면 '시/도','군'으로 '경기도','가평/연천/양편' 등으로 설명이 되어있긴한데.. 실제로 엑셀에서 해보면 도움말과 달리 에러가 나네요. ( '시/도','군','우편번호' 등 지도 정보가 필요... )
'군'이 되는 거라면, '군/구' 까지 되야 맞을 거 같은데...
혹시 '경기도' 이하의 '화성시, 안양시' 등의 레벨도 안되는 걸까요??
제가 입력을 제대로 못해서 그런건지...
오빠두엑셀
오빠두엑셀 작성자 2022.05.13 15:38
안녕하세요.
맵 차트는 시/도까지만 가능합니다.
현재 군단위는 지원되지 않는 것으로 알고 있습니다.
호잉👻
호잉👻 2023.02.09 22:12
매크로 돌릴 때 저는 왜 런타임 오류가 날까요?ㅠ 해결 부탁드려요 흑흑.. 계속 오류떠서 엑셀이 멈춰버리네요..
오류메시지입니다.
'1004' 런타임 오류가 발생하였습니다.
Picture 클래스 중 Formula 속성을 설정할 수 없습니다.
오빠두엑셀
오빠두엑셀 작성자 2023.02.14 14:05
안녕하세요.
사용하고 계신 엑셀 버전이 어떻게 되시나요?
2010 이전 버전일 경우 말씀하신 오류가 발생할 수 있습니다.
엑셀 버전을 한번 확인해보세요.
호잉👻
호잉👻 2023.03.15 10:29
구버전 엑셀은 아니고, 엑셀 365입니다. 옵션-보안센터-매크로설정-VBA매크로 사용에 체크까지 다 했습니다.그래도 안되는데 해결할 수 있는 방법이 있을까요?ㅠ
오빠두엑셀
오빠두엑셀 작성자 2023.03.18 02:18
안녕하세요.
윈도우 버전의 M365 라면 오류가 발생하지 않아야 합니다.
혹시 Mac을 사용중이실까요?
alex jay
alex jay 2024.07.19 16:57
안녕하세요, 저도 365 사용중인데 동일한 오류가 발생합니다. 집 데스크탑으로 회사 기업용 ms 365 모두 동일하게 오류가 발생합니다.. !
오빠두엑셀
오빠두엑셀 작성자 2024.07.19 17:52
안녕하세요. 오빠두엑셀입니다.
오류가 발생할 경우, [디버깅] 버튼을 클릭하여 오류가 발생한 지점을 확인할 수 있습니다.
오류가 발생한 지점과 오류를 스크린샷과 함께 한번 첨부해주시겠어요? :) 확인 후 답변 드리겠습니다.
감사합니다.
alex jay
alex jay 2024.07.22 14:16
안녕하세요, 오류 페이지 첨부 합니다. !
디버깅-오류
오빠두엑셀
오빠두엑셀 작성자 2024.07.23 19:58
안녕하세요. 오빠두엑셀입니다.
해당 오류가 발생한 지점 앞에, 아래 코드를 추가한 후 사진 이름과 반환된 수식이 올바른지 한번 확인해보시길 바랍니다. :)
msgbox "사진이름 : " & pic.Name & "='" & ws.Name & "'!" & Trim(sFormula)
고야옹이
고야옹이 2024.01.20 21:29
안녕하세요 강의 정말 잘 보고 있습니다 감사드립니다
하나 잘 되지 않는 것이 생겨서 질문 드립니다
매크로 사용해서 이미지 까지는 어찌저찌 만들었는데,
그 이미지를 잘라내서 대시보드 시트에 붙여넣기 하면은 지역별 이미지가 나오는게 아니라
첨부한 이미지처럼 뜨는게 뭐가 문제인걸까요?
스크린샷-2024-01-20-212733
오빠두엑셀
오빠두엑셀 작성자 2024.01.21 16:18
안녕하세요.
그림으로 봤을 때, 시트의 눈금선이 연결되어 표시되는 것 같습니다.
이미지의 원본이 있는 시트에서, [보기] - [눈금선]을 체크해제해서 눈금선을 한번 숨겨보시겠어요? :)
감사합니다.