ChatGPT로 만드는 엑셀 대시보드 실전 가이드 | 모든 버전 가능

이제 엑셀 초보자도 대시보드를 정말 쉽게 만들 수 있습니다! ChatGPT로 엑셀 자동화 대시보드를 편리하게 만들어보세요!✨

# 데이터분석 # VBA # 대시보드

작성자 :
오빠두엑셀
최종 수정일 : 2025. 05. 02. 07:08
URL 복사
메모 남기기 : (14)

ChatGPT로 만드는 엑셀 대시보드 실전 가이드 (모든 버전 가능!)

ChatGPT 엑셀 대시보드 목차 바로가기
영상 강의


예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [대시보드강의] ChatGPT로 엑셀 자동화 대시보드 만들기
    예제파일

.

라이브 강의 전체영상도 함께 확인해보세요!

위캔두 회원이 되시면 매주 오빠두엑셀에서 진행하는 라이브강의 풀영상을 확인하실 수 있습니다.


1단계 : 데이터 분석 & 차트 구성하기

이제 엑셀 대시보드도 ChatGPT로 쉽게 만들 수 있습니다. 이제 엑셀 초보자도 누구나 ChatGPT의 도움을 받아 몇분 만에, 실시간 필터가 적용되는 자동화 대시보드를 만들 수 있습니다. 오늘은 엑셀 2013 이후 버전과 무료 버전의 ChatGPT로 구현 가능한 엑셀 대시보드 제작 과정을 단계별로 알아보겠습니다.

chatgpt-엑셀-자동화-대시보드
이제 ChatGPT로 쉽고 빠르게 엑셀 대시보드를 구축해보세요!

대시보드 제작의 시작은 '무엇을 보여줄 것인지' 결정하는 겁니다. ChatGPT를 사용하면 데이터에서 인사이트를 도출하고 시각화에 적합한 차트 아이디어를 얻을 수 있습니다. ChatGPT 입력창에 아래 프롬프트를 입력 후 실행하면 대시보드에 적합한 차트와 이를 통해 도출할 수 있는 인사이트를 얻을 수 있습니다.

입력 프롬프트
아래 샘플 데이터를 기반으로 엑셀 대시보드를 만들려고 해.
대시보드에는 총 5개의 차트를 사용할거야.
주어진 샘플 데이터를 꼼꼼히 분석해서, 데이터의 주요 트렌드와 인사이트를 사용자가 쉽게 이해하는데 도움이 되는 차트 5개를 제안해.
답변은 우선 차트 제목과 설명을 번호 머리글 스타일로 간략하게 정리해.
모두 정리한 이후, 그 아래에는 각각의 차트를 통해 어떤 인사이트를 분석 가능한지 추가 설명을 작성할 것.
 
#샘플데이터
순위 게임명 플랫폼 발행일 장르 퍼블리셔 북미 판매량 유럽 판매량 일본 판매량 기타 판매량 글로벌 판매량
1 Wii 스포츠 닌텐도 Wii 2006 스포츠 닌텐도 41.49 29.02 3.77 8.46 82.74
2 슈퍼 마리오브라더스 닌텐도S 1985 횡스크롤 닌텐도 29.08 3.58 6.81 0.77 40.24
3 마리오 카트 Wii 닌텐도 Wii 2008 레이싱 닌텐도 15.85 12.88 3.79 3.31 35.82
4 Wii 스포츠 리조트 닌텐도 Wii 2009 스포츠 닌텐도 15.75 11.01 3.28 2.96 33
5 포켓몬 레드/포켓몬 블루 게임보이 1996 롤플레잉 닌텐도 11.27 8.89 10.22 1 31.37
... (예제파일 또는 실제 데이터의 일부분을 입력합니다.)
ChatGPT 응답
샘플 데이터를 기반으로 한 엑셀 대시보드용 차트 5개와 그에 대한 간단한 설명을 아래와 같이 정리하였습니다.
📊 제안 차트 목록
1. 연도별 글로벌 판매량 트렌드 (꺾은선형 차트)
: 게임의 발행 연도를 기준으로 전체 글로벌 판매량의 추이를 시각화합니다.
2. 장르별 글로벌 판매량 비교 (세로 막대형 차트)
: 각 장르별로 판매된 글로벌 총합을 비교하여 인기 장르를 파악합니다.
...
chatgpt-대시보드-차트-목록
데이터를 분석한 후, 대시보드에 적합한 차트 목록와 인사이트를 제안합니다.

2단계 : 차트에 사용할 피벗테이블 구성하기

차트 구성이 끝났다면, 이제 차트 제작에 필요한 피벗테이블을 구성합니다. ChatGPT에 아래 프롬프트를 입력하면, 각 차트 제작에 필요한 필드를 정확히 매칭한 피벗테이블 구성안이 작성됩니다.

입력 프롬프트
좋아. 이전 대화의 샘플 데이터에서 아래 5개 차트를 만들려고 해.
차트와 피벗테이블의 구성요소를 표 형식으로 정리해.
표는 "차트명 | 차트종류 | 행영역 | 열영역 | 값영역 | 정렬또는필터방식 | 피벗테이블명(영문, 간략히)" 으로 구성할 것.
표 아래에는 각 차트를 통해 어떤 인사이트를 분석 가능한지 추가 설명을 간략히 정리해.
 
#차트
// 차트 목록은 1단계에서 얻은 내용으로 입력합니다.
1. 연도별 판매 트렌드 (꺾은선형 차트)
: 발행 연도별 글로벌 판매량 추이 확인, 시장 성장 흐름 파악
2. TOP 10 퍼블리셔 판매량 순위 (가로 막대형 차트)
: TOP10 퍼블리셔의 판매량 순위를 시각화
3. 지역별 글로벌 판매량 비교 (파이 차트)
: 지역별 판매량의 차이를 시각적으로 분석
4. 플랫폼별 글로벌 판매량 (파이 차트)
: 닌텐도 Wii, 닌텐도 DS, 게임보이 등 플랫폼별 총 판매량 비중을 시각화
5. 장르별 게임 판매량 (가로 막대형 차트)
: 스크롤, 횡스크롤 등 장르별 판매량으로 어떤 장르가 성공했는지 파악
ChatGPT 응답
아래는 샘플 데이터를 기반으로 설정한 엑셀 피벗테이블 및 차트 구성표입니다.
각 차트별로 어떤 항목을 피벗테이블의 행, 열, 값 영역에 배치해야 하는지 정리했으며, 정렬 및 필터 방식과 함께 피벗테이블 이름도 간단히 기입했습니다.
 
📊 엑셀 차트 및 피벗테이블 구성표
차트명 차트종류 행영역 열영역 값영역 정렬또는필터방식 피벗테이블명(영문)
1. 연도별 판매 트렌드 꺾은선형 차트 발행일 없음 글로벌 판매량 (합계) 발행일 오름차순 정렬 SalesTrendByYear
2. TOP 10 퍼블리셔 판매 순위 가로 막대형 차트 퍼블리셔 없음 글로벌 판매량 (합계) 판매량 기준 내림차순, 상위 10개만 표시 Top10Publishers
...
chatgpt-대시보드-피벗테이블-구성
대시보드에 사용할 차트의 각 필드를 매칭한 피벗테이블을 구성합니다.

간혹 응답이 표 형식으로 나오지 않을 때가 있습니다. 그럴 경우, 이전 단계의 프롬프트에서 '메시지 편집' 버튼을 클릭해서 프롬프트를 다시 실행합니다.

chatgpt-메시지-편집
메시지 편집 버튼을 클릭해서 동일한 프롬프트를 다시 실행할 수 있습니다.

3단계 : 대시보드 템플릿 만들기

이제 대시보드의 기본 템플릿을 구축합니다. ChatGPT를 사용해서 대시보드에 필요한 제목 영역과 배경, 차트 영역을 한 번에 생성하는 VBA 코드를 작성해보겠습니다.

스포이트를 활용해서 대시보드의 테마(색감)을 정하는 방법과 글로벌 유명 브랜드의 색조합 코드는 이전 영상 강의에서 꼼꼼히 정리했으니 참고하세요!


입력 프롬프트
훌륭해. 이제 너가 제안한 시각화 방식을 참고해서 대시보드를 만들거야. 먼저 비어있는 시트에 대시보드 틀을 구성해보자.
아래 지침에 따라 지정한 시트에 도형을 추가하는 VBA 매크로를 작성해.
 
#VBA코드작성지침
- 대시보드 틀을 제작할 시트의 이름 : "대시보드"
- 대시보드의 전반적인 스타일 : 뉴모피즘, 모던 스타일 대시보드
- 대시보드의 테마색은 다음 색상을 사용할거야. 배경색 : F2EDF3, 제목영역색: 1D2433, 차트영역색: FFFFFF
- 시트의 채우기 색상을 배경색으로 변경.
- 시트 최상단에는 제목영역색으로 채워진 가로로 긴 타이틀 바를 추가하고 안에는 "글로벌 게임 TOP 1000 판매 현황 대시보드"으로 제목을 넣을 것.
- 타이틀 바 아래에는 차트영역색으로 채워진 모서리가 둥근 사각형을 2개 추가할 것.
- 그 아래에는 차트영역색으로 채워진 모서리가 둥근 사각형을 3개 추가할 것.
- 둥근 사각형의 이름은 ChartBox1, ChartBox2, ... 로 순번이 1씩 증가하는 이름으로 설정.
- 각 둥근 사각형에는 제목영역의 색, 85%의 투명도, 30pt 정도의 흐림도, 바깥쪽 방향 45도 각도의 그림자를 추가해.
- VBA 코드를 실행할 때 오류가 발생하지 않도록, 단계별로 차근차근 꼼꼼히 검토해서 작성할 것.
ChatGPT 응답
Sub CreateDashboardLayout()
 
    Dim ws As Worksheet
    Dim shp As Shape
    Dim i As Integer
    Dim chartBoxNames(1 To 5) As String
    Dim chartTop As Double
 
    ' 시트 확인 또는 새로 생성
    On Error Resume Next
    Set ws = ThisWorkbook.Worksheets("대시보드")
    If ws Is Nothing Then
        Set ws = ThisWorkbook.Worksheets.Add
        ws.Name = "대시보드"
    End If
    On Error GoTo 0
 
    ws.Activate
    ws.Cells.Clear
 
    ' 배경색 설정
    ws.Cells.Interior.Color = RGB(&HF2, &HED, &HF3)
 
    ' 타이틀 바 추가
    Set shp = ws.Shapes.AddShape(msoShapeRectangle, 0, 0, ws.UsedRange.Width * 10 + 800, 80)
    With shp
        .Name = "TitleBar"
        .Fill.ForeColor.RGB = RGB(&H1D, &H24, &H33)
        .Line.Visible = msoFalse
        .TextFrame2.TextRange.Text = "글로벌 게임 TOP 1000 판매 현황 대시보드"
        With .TextFrame2.TextRange.Font
            .Name = "맑은 고딕"
            .Size = 20
            .Bold = msoTrue
            .Fill.ForeColor.RGB = RGB(&HFF, &HFF, &HFF)
        End With
        .Top = 0
        .Left = 20
        .Height = 80
        .Width = 900
    End With
 
    ' 차트 박스 색상 및 스타일 설정
    Dim chartFillColor As Long: chartFillColor = RGB(&HFF, &HFF, &HFF)
    Dim shadowColor As Long: shadowColor = RGB(&H1D, &H24, &H33)
 
    chartBoxNames(1) = "ChartBox1"
    chartBoxNames(2) = "ChartBox2"
    chartBoxNames(3) = "ChartBox3"
    chartBoxNames(4) = "ChartBox4"
    chartBoxNames(5) = "ChartBox5"
 
    ' 상단 2개 박스
    chartTop = 100
    For i = 1 To 2
        Set shp = ws.Shapes.AddShape(msoShapeRoundedRectangle, 20 + (i - 1) * 460, chartTop, 420, 250)
        With shp
            .Name = chartBoxNames(i)
            .Fill.ForeColor.RGB = chartFillColor
            .Fill.Transparency = 0.15
            .Line.Visible = msoFalse
            .Shadow.Type = msoShadow6
            .Shadow.Style = msoShadowStyleOuterShadow
            .Shadow.ForeColor.RGB = shadowColor
            .Shadow.Transparency = 0.85
            .Shadow.Blur = 30
            .Shadow.OffsetX = 10
            .Shadow.OffsetY = 10
        End With
    Next i
 
    ' 하단 3개 박스
    chartTop = 380
    For i = 3 To 5
        Set shp = ws.Shapes.AddShape(msoShapeRoundedRectangle, 20 + (i - 3) * 300, chartTop, 280, 220)
        With shp
            .Name = chartBoxNames(i)
            .Fill.ForeColor.RGB = chartFillColor
            .Fill.Transparency = 0.15
            .Line.Visible = msoFalse
            .Shadow.Type = msoShadow6
            .Shadow.Style = msoShadowStyleOuterShadow
            .Shadow.ForeColor.RGB = shadowColor
            .Shadow.Transparency = 0.85
            .Shadow.Blur = 30
            .Shadow.OffsetX = 10
            .Shadow.OffsetY = 10
        End With
    Next i
 
    MsgBox "대시보드 레이아웃이 성공적으로 생성되었습니다!", vbInformation
 
End Sub

ChatGPT가 작성해 준 VBA 코드를 매크로 편집기에 입력 후 실행하면, 아래 그림과 같이 대시보드 템플릿이 완성됩니다.

chatgpt-대시보드-템플릿
지정한 테마색으로 이루어진 대시보드 템플릿이 완성됩니다.
오빠두Tip : 매크로 실행 도중 오류가 발생할 경우, 영상 강의 중 "발생하는 오류를 ChatGPT로 수정하는 방법" 부분을 참고해서 오류를 수정한 후 코드를 다시 실행해보세요!

4단계 : 대시보드에 사용할 피벗테이블 만들기

템플릿이 완성됐다면, 이제 대시보드 차트에 활용할 피벗테이블을 생성해보겠습니다. (피벗테이블구성은 2단계에서 얻은 피벗테이블 구성 표를 입력합니다.)

오빠두Tip : VBA를 좀 더 자세히 배우고 싶다면, 실무에 꼭 필요한 VBA 핵심 사용법을 빠르게 배우는 원데이 무료 챌린지를 확인하세요!👇
입력 프롬프트
이번에는 대시보드에 사용할 피벗테이블을 만들자.
피벗테이블에 사용할 원본데이터는 "Data" 시트의 "GameData" 라는 테이블에 정리되어 있어.
아래 VBA 코드 작성 지침에 따라 VBA 코드를 작성해.
 
#코드작성지침
- "피벗"이라는 이름을 가진 시트에 피벗테이블을 생성할거야.
- 피벗캐시를 생성할 땐, 테이블을 참조하므로 relativeTo 속성은 비워둬서 오류가 발생하지 않도록 주의해.
- 피벗테이블을 추가할 땐, 각 피벗테이블이 겹치지 않도록 이전 단계에서 생성한 피벗테이블의 마지막 열을 찾은 후, 해당 열의 3열 오른쪽에 새로운 피벗테이블이 추가되도록 할 것.
- 피벗테이블의 구성은 아래 피벗테이블 구성 표를 참고해.
- 피벗테이블의 값필드를 추가할 땐 이름 중복으로 인한 오류가 발생하지 않도록, 레이블 뒤에 합계 또는 평균을 붙여.
- 정렬이 필요할 경우 AutoSort를 사용하고, Top10 항목의 값필터는 PivotFilters.Add2 속성을 사용해.
- VBA 코드 를 실행할 때 오류가 발생하지 않도록, 단계별로 꼼꼼히 검토해서 차근차근 작성할 것.
 
#피벗테이블구성
차트명 차트종류 행영역 열영역 값영역 정렬또는필터방식 피벗테이블명 (영문)
연도별 판매 트렌드 꺾은선형 차트 발행일 없음 글로벌 판매량 (합계) 발행일 오름차순 정렬 TrendByYear
플랫폼별 글로벌 판매량 파이 차트 플랫폼 없음 글로벌 판매량 (합계) 글로벌 판매량 내림차순 정렬 GlobalByPlatform
지역별 판매량 비교 세로 막대형 플랫폼 없음 북미, 유럽, 일본, 기타 판매량 (합계) 플랫폼 내림차순 (글로벌 판매량 기준) RegionByPlatform
장르별 게임 판매량 가로 막대형 장르 없음 글로벌 판매량 (합계) 글로벌 판매량 내림차순 정렬 GlobalByGenre
TOP 10 퍼블리셔 판매량 순위 가로 막대형 퍼블리셔 없음 글로벌 판매량 (합계) 글로벌 판매량 내림차순, 상위 10개만 표시 Top10Publisher
ChatGPT 응답
Sub CreateDashboardPivots()
 
    Dim wsData As Worksheet, wsPivot As Worksheet
    Dim tbl As ListObject
    Dim pc As PivotCache
    Dim pt As PivotTable
    Dim lastCol As Long
    Dim ptRange As Range
    Dim startCol As Long
    Dim i As Integer
 
    Dim ptInfo As Variant
    Dim valueFields As Variant, fld As Variant
 
    ' 원본 데이터 및 피벗 시트 설정
    Set wsData = ThisWorkbook.Sheets("Data")
    Set tbl = wsData.ListObjects("GameData")
 
    ' 피벗 시트 준비
    On Error Resume Next
    Set wsPivot = ThisWorkbook.Sheets("피벗")
    If wsPivot Is Nothing Then
        Set wsPivot = ThisWorkbook.Sheets.Add(After:=wsData)
        wsPivot.Name = "피벗"
    Else
        wsPivot.Cells.Clear
    End If
    On Error GoTo 0
 
    ' 피벗캐시 생성
    Set pc = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=tbl.Range.Address(, , xlA1, True))
 
    ' 피벗테이블 구성 정보 배열 (이름, 행필드, 값필드 배열, 정렬방법)
    ptInfo = Array( _
        Array("TrendByYear", "발행일", Array("글로벌 판매량"), "발행일 ASC"), _
        Array("GlobalByPlatform", "플랫폼", Array("글로벌 판매량"), "글로벌 판매량 DESC"), _
        Array("RegionByPlatform", "플랫폼", Array("북미 판매량", "유럽 판매량", "일본 판매량", "기타 판매량"), "글로벌 판매량 DESC"), _
        Array("GlobalByGenre", "장르", Array("글로벌 판매량"), "글로벌 판매량 DESC"), _
        Array("Top10Publisher", "퍼블리셔", Array("글로벌 판매량"), "TOP10 DESC") _
    )
 
    startCol = 1
 
    For i = LBound(ptInfo) To UBound(ptInfo)
        Dim ptName As String: ptName = ptInfo(i)(0)
        Dim rowField As String: rowField = ptInfo(i)(1)
        valueFields = ptInfo(i)(2)
        Dim sortType As String: sortType = ptInfo(i)(3)
 
        Set ptRange = wsPivot.Cells(1, startCol)
        Set pt = wsPivot.PivotTables.Add(PivotCache:=pc, TableDestination:=ptRange, TableName:=ptName)
 
        With pt
            ' 행 필드 추가
            .PivotFields(rowField).Orientation = xlRowField
            .PivotFields(rowField).Position = 1
 
            ' 값 필드 추가
            For Each fld In valueFields
                .AddDataField .PivotFields(fld), fld & " 합계", xlSum
            Next fld
 
            ' 정렬 처리
            If sortType Like "*ASC" Then
                .PivotFields(rowField).AutoSort xlAscending, rowField
            ElseIf sortType Like "*DESC" Then
                .PivotFields(rowField).AutoSort xlDescending, Replace(sortType, " DESC", "")
            ElseIf sortType Like "TOP10*" Then
                .PivotFields(rowField).AutoSort xlDescending, Replace(sortType, "TOP10 DESC", "")
                .PivotFields(rowField).PivotFilters.Add2 _
                    Type:=xlTopCount, _
                    DataField:=.DataFields(1), _
                    Value1:=10
            End If
        End With
 
        ' 다음 피벗의 시작 위치 계산 (겹치지 않게 3열 띄우기)
        startCol = pt.TableRange2.Columns(pt.TableRange2.Columns.Count).Column + 3
    Next i
 
    MsgBox "모든 피벗테이블이 성공적으로 생성되었습니다!", vbInformation
 
End Sub

위 매크로를 VBA 편집기에 입력 후 실행하면, 아래 그림과 같이 대시보드 제작에 필요한 피벗테이블이 한 번에 생성됩니다.

엑셀-chatgpt-피벗테이블-만들기
차트 제작에 필요한 피벗테이블이 한 번에 생성됩니다.

5단계 : 피벗테이블로 대시보드 차트 만들기

이제 준비된 피벗테이블을 기반으로 대시보드에 차트를 생성해보겠습니다. ChatGPT를 사용하면 이전 단계에서 만든 대시보드 템플릿에 위치와 크기, 스타일이 깔끔하게 정리된 차트를 한 번에 만들 수 있습니다.

입력 프롬프트
이제 각 피벗테이블의 데이터로 대시보드에 사용할 차트를 만들자.
차트에 사용할 피벗테이블은 "피벗" 이름을 가진 시트에 생성되어 있어. 각 피벗테이블의 이름은 아래 정리한 차트 구성표의 피벗테이블명을 참고해.
아래 VBA 코드 작성 지침에 따라 대시보드에 사용할 차트를 생성하는 VBA 코드를 작성해.
 
#VBA코드작성지침
- 대시보드에 사용할 차트는 "대시보드" 시트에 있는 ChartBox1, ChartBox2.. 형식으로 1씩 증가하는 순번의 이름을 가진 도형 위에 추가.
- 아래 차트종류및구성 표의 순서에 따라 각 도형을 먼저 찾은 후, 도형의 위치와 크기를 참조하여 차트를 생성.
- 차트의 높이와 너비는 도형 높이와 너비의 90% 크기로 생성하고, 각 도형의 좌측상단 위치를 기준으로 도형의 높이 및 너비의 5% 여백을 두고 생성.
- 피벗 차트의 버튼은 ShowAllFieldButtons 속성을 false로 설정해서 숨기기.
- 차트의 눈금선과 테두리를 제거하고, 범례(legend)가 1개일 경우 범례도 제거할 것.
- 차트의 배경 채우기 색은 투명하게 설정.
- 차트의 제목은 아래 목록의 차트명으로 수정
- 가로막대 차트일 경우 첫번째 세로축의 ReversePlotOrder 를 True로 설정해서 항목을 거꾸로 표시.
- 코드를 실행할 때 오류가 발생하지 않도록, 단계별로 꼼꼼히 검토해서 차근차근 작성할 것.
 
#차트종류및구성
차트명 차트종류 행영역 열영역 값영역 정렬또는필터방식 피벗테이블명 (영문)
연도별 판매 트렌드 꺾은선형 차트 발행일 없음 글로벌 판매량 (합계) 발행일 오름차순 정렬 TrendByYear
플랫폼별 글로벌 판매량 파이 차트 플랫폼 없음 글로벌 판매량 (합계) 글로벌 판매량 내림차순 정렬 GlobalByPlatform
지역별 판매량 비교 세로 막대형 플랫폼 없음 북미, 유럽, 일본, 기타 판매량 (합계) 플랫폼 내림차순 (글로벌 판매량 기준) RegionByPlatform
장르별 게임 판매량 가로 막대형 장르 없음 글로벌 판매량 (합계) 글로벌 판매량 내림차순 정렬 GlobalByGenre
TOP 10 퍼블리셔 판매량 순위 가로 막대형 퍼블리셔 없음 글로벌 판매량 (합계) 글로벌 판매량 내림차순, 상위 10개만 표시 Top10Publisher
ChatGPT 응답
Sub CreateDashboardCharts()
 
    Dim wsDashboard As Worksheet, wsPivot As Worksheet
    Dim shp As Shape, chtObj As ChartObject
    Dim pt As PivotTable
    Dim chartTop As Double, chartLeft As Double
    Dim chartWidth As Double, chartHeight As Double
    Dim chartNames As Variant, chartTypes As Variant, ptNames As Variant
    Dim i As Integer
 
    ' 시트 설정
    Set wsDashboard = ThisWorkbook.Sheets("대시보드")
    Set wsPivot = ThisWorkbook.Sheets("피벗")
 
    ' 차트명, 종류, 피벗테이블명 배열 설정
    chartNames = Array( _
        "연도별 판매 트렌드", _
        "플랫폼별 글로벌 판매량", _
        "지역별 판매량 비교", _
        "장르별 게임 판매량", _
        "TOP 10 퍼블리셔 판매량 순위" _
    )
 
    chartTypes = Array( _
        xlLine, xlPie, xlColumnClustered, xlBarClustered, xlBarClustered _
    )
 
    ptNames = Array( _
        "TrendByYear", _
        "GlobalByPlatform", _
        "RegionByPlatform", _
        "GlobalByGenre", _
        "Top10Publisher" _
    )
 
    ' 차트 생성 반복
    For i = 0 To UBound(chartNames)
        On Error Resume Next
        Set shp = wsDashboard.Shapes("ChartBox" & (i + 1))
        On Error GoTo 0
 
        If shp Is Nothing Then
            MsgBox "ChartBox" & (i + 1) & " 도형을 찾을 수 없습니다.", vbExclamation
            Exit Sub
        End If
 
        ' 도형 위치 및 크기 계산 (도형 기준 5% 여백, 90% 크기)
        chartLeft = shp.Left + shp.Width * 0.05
        chartTop = shp.Top + shp.Height * 0.05
        chartWidth = shp.Width * 0.9
        chartHeight = shp.Height * 0.9
 
        ' 피벗테이블 참조
        Set pt = wsPivot.PivotTables(ptNames(i))
 
        ' 기존 차트 제거 (같은 위치에 다시 만들 경우)
        For Each chtObj In wsDashboard.ChartObjects
            If Not Intersect(wsDashboard.Cells(chartTop, chartLeft), chtObj.TopLeftCell) Is Nothing Then
                chtObj.Delete
            End If
        Next chtObj
 
        ' 차트 객체 생성
        Set chtObj = wsDashboard.ChartObjects.Add(Left:=chartLeft, Top:=chartTop, Width:=chartWidth, Height:=chartHeight)
        With chtObj
            .Chart.SetSourceData Source:=pt.TableRange1
            .Chart.ChartType = chartTypes(i)
            .Chart.HasTitle = True
            .Chart.ChartTitle.Text = chartNames(i)
            .Chart.ChartStyle = 2
 
            ' 공통 속성: 눈금선, 버튼, 배경 제거
            On Error Resume Next
            .Chart.Axes(xlValue).MajorGridlines.Delete
            .Chart.Axes(xlCategory).MajorGridlines.Delete
            On Error GoTo 0
            .Chart.ShowAllFieldButtons = False
            .Chart.ChartArea.Format.Fill.Visible = msoFalse
            .Chart.ChartArea.Format.Line.Visible = msoFalse
 
            ' 범례가 하나뿐이면 제거
            If .Chart.Legend Is Nothing = False Then
                If .Chart.Legend.LegendEntries.Count = 1 Then
                    .Chart.HasLegend = False
                End If
            End If
 
            ' 가로 막대형 차트일 경우 항목 역순
            If chartTypes(i) = xlBarClustered Then
                On Error Resume Next
                .Chart.Axes(xlCategory).ReversePlotOrder = True
                On Error GoTo 0
            End If
        End With
    Next i
 
    MsgBox "모든 차트가 대시보드에 성공적으로 생성되었습니다!", vbInformation
 
End Sub

완성된 매크로 코드를 VBA 편집기에 입력 후 실행하면, 아래 그림과 같이 대시보드 템플릿에 차트가 한 번에 생성됩니다.

chatgpt-엑셀-대시보드-차트-만들기
대시보드 템플릿에 지정한 차트가 일괄 생성됩니다.
오빠두Tip : 차트 간소화를 통해 필요한 부분을 강조하고 시각화하는 방법은 이전 영상 강의에서 알기 쉽게 정리했습니다. 차트 시각화의 자세한 설명은 아래 기초 입문 강의를 참고하세요!👇

6단계 : 실시간 필터 슬라이서 만들기

이재 실시간 필터를 거는 슬라이서를 추가해서 대시보드의 완성도를 높여보겠습니다. 놀랍게도, 이 슬라이서를 추가하는 작업도 ChatGPT로 매우 편리하게 처리할 수 있습니다.

먼저, 슬라이서를 추가하기 전 슬라이서를 만들 영역을 지정합니다. 이전 단계에서 만든 차트 영역의 도형을 하나 복사하고, 이름 상자에서 도형의 이름을 "SlicerBox"로 변경한 후 진행합니다.

chatgpt-대시보드-슬라이서-영역
슬라이서 영역에 사용할 배경 도형을 하나 추가한 후, 이름을 SlicerBox로 변경합니다.
입력 프롬프트
아주 훌륭해. 이제 마지막 단계야. 대시보드를 실시간으로 필터링하는 슬라이서를 추가하자.
아래 VBA코드 작성 지침에 따라 슬라이서를 추가하는 VBA 코드를 생성할 것.
 
#VBA코드작성지침
- "플랫폼, 장르"를 필터링하는 슬라이서를 추가.
- "피벗" 시트의 첫번째 피벗테이블을 기준으로 슬라이서를 생성한 후, 각 슬라이서는 "피벗" 시트에 있는 모든 피벗테이블을 동시에 필터링 할 수 있도록  SlicerChaces.PivotTAbles.AddPivotTable 속성으로 모든 피벗테이블 보고서를 연결.
- 슬라이서는 "대시보드" 시트에 있는 "SlicerBox" 도형 안에 추가.
- 코드를 실행할 때 오류가 발생하지 않도록, 단계별로 꼼꼼히 검토해서 차근차근 작성할 것.
ChatGPT 응답
Sub AddDashboardSlicers_Safe()
 
    Dim wsDashboard As Worksheet, wsPivot As Worksheet
    Dim shpSlicerBox As Shape
    Dim ptBase As PivotTable
    Dim slicerCache As SlicerCache
    Dim slicerNames As Variant, pivotFields As Variant
    Dim i As Integer
    Dim leftPos As Double, topPos As Double, slicerWidth As Double, slicerHeight As Double
    Dim sc As SlicerCache
    Dim slicerExists As Boolean
 
    ' 시트 참조
    Set wsDashboard = ThisWorkbook.Sheets("대시보드")
    Set wsPivot = ThisWorkbook.Sheets("피벗")
 
    ' SlicerBox 도형 확인
    On Error Resume Next
    Set shpSlicerBox = wsDashboard.Shapes("SlicerBox")
    On Error GoTo 0
    If shpSlicerBox Is Nothing Then
        MsgBox "'SlicerBox' 도형이 없습니다. 슬라이서를 추가할 수 없습니다.", vbExclamation
        Exit Sub
    End If
 
    ' 기준 피벗테이블
    Set ptBase = wsPivot.PivotTables(1)
 
    ' 필드와 슬라이서 이름 설정
    pivotFields = Array("플랫폼", "장르")
    slicerNames = Array("Slicer_Platform", "Slicer_Genre")
 
    ' 슬라이서 박스 기준 위치
    slicerWidth = shpSlicerBox.Width / 2 - 10
    slicerHeight = shpSlicerBox.Height - 20
    topPos = shpSlicerBox.Top + 10
 
    For i = 0 To UBound(pivotFields)
        leftPos = shpSlicerBox.Left + 10 + (i * (slicerWidth + 10))
 
        slicerExists = False
 
        ' 기존 슬라이서 캐시 존재 여부 확인
        For Each sc In ThisWorkbook.SlicerCaches
            If sc.SourceName = pivotFields(i) Then
                Set slicerCache = sc
                slicerExists = True
                Exit For
            End If
        Next sc
 
        ' 슬라이서 캐시가 없으면 생성
        If Not slicerExists Then
            Set slicerCache = ThisWorkbook.SlicerCaches.Add2(ptBase, pivotFields(i))
        End If
 
        ' 기준 슬라이서 객체가 있다면 삭제
        On Error Resume Next
        wsDashboard.Shapes(slicerNames(i)).Delete
        On Error GoTo 0
 
        ' 피벗테이블 연결
        Dim pt As PivotTable
        For Each pt In wsPivot.PivotTables
            On Error Resume Next
            slicerCache.PivotTables.AddPivotTable pt
            On Error GoTo 0
        Next pt
 
        ' 슬라이서 추가
        With slicerCache.Slicers.Add(wsDashboard, , pivotFields(i), pivotFields(i), leftPos, topPos, slicerWidth, slicerHeight)
            .Name = slicerNames(i)
        End With
    Next i
 
    MsgBox "슬라이서가 오류 없이 성공적으로 추가되었습니다!", vbInformation
 
End Sub

위 매크로를 실행하면 아래 그림과 같이 슬라이서 영역으로 만든 도형 안에 슬라이서가 추가됩니다.

엑셀-chatgpt-슬라이서-만들기
슬라이서 영역 안에 슬라이서가 추가됩니다.

7단계 : 색조합 템플릿으로 스타일 꾸미기

이제 마지막 단계로 색 조합 템플릿을 활용해서 대시보드 스타일을 꾸며주겠습니다. 색 조합 템플릿을 활용하는 방법은 이전 강의에서 꼼꼼히 정리했으니 아래 링크를 참고하세요!

엑셀-대시보드-색-조합-템플릿-gif-min
색 조합 템플릿으로 테마색을 등록하면 대시보드 스타일을 편리하게 꾸밀 수 있습니다.
4.9 8 추천
게시글평점
Subscribe
Notify of
guest
14 Comments
Inline Feedbacks
View all comments
14
0
Would love your thoughts, please comment.x