본문 바로가기
■ 칼퇴를 위한 VBA : 사례/- VBA for 엑셀

VBA로 엑셀 차트 작성 자동화하기

by 포탈메이커 2023. 7. 24.

VBA로 엑셀 차트 작성 자동화하기

엑셀은 데이터 시각화를 위해 다양한 차트를 제공합니다. 하지만 큰 데이터셋을 다루게 되면 많은 시간과 노력이 필요합니다.

이런 경우 VBA(Visual Basic for Applications)를 사용하여 엑셀 차트를 자동으로 작성할 수 있습니다.

 

 

1. VBA란?

VBA는 엑셀의 매크로 언어로, 사용자가 복잡한 작업을 자동화하고 반복 작업을 효율적으로 수행할 수 있도록 도와줍니다. VBA를 사용하면 사용자가 직접 작업을 수행하는 것보다 훨씬 빠르고 정확하게 작업을 완료할 수 있습니다.


2. 엑셀 차트 작성 자동화하기

엑셀 차트를 자동으로 작성하기 위해서는 몇 가지 단계를 따라야 합니다.

 

데이터 입력: 차트에 표시할 데이터를 입력합니다. 엑셀 파일의 특정 시트에 데이터를 입력하면 됩니다.

차트 생성: 데이터를 입력한 후에는 차트를 생성해야 합니다. VBA의 ChartObjects.Add 메서드를 사용하여 차트를 추가할 수 있습니다.

Sub CreateChart()
    Dim ws As Worksheet
    Dim co As ChartObject
    Dim cht As Chart
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set co = ws.ChartObjects.Add(Left:=100, Width:=300, Top:=100, Height:=200)
    Set cht = co.Chart
End Sub

 

데이터 범위 지정: 차트에 표시할 데이터 범위를 지정해야 합니다. VBA의 SetSourceData 메서드를 사용하면 됩니다.

Sub CreateChart()
    ' ...

    Dim ws As Worksheet
    Dim co As ChartObject
    Dim cht As Chart
    Dim rng As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set co = ws.ChartObjects.Add(Left:=100, Width:=300, Top:=100, Height:=200)
    Set cht = co.Chart
    
    Set rng = ws.Range("A1:C4")
    cht.SetSourceData Source:=rng

    ' ...
End Sub

 

차트 유형 설정: 차트의 유형을 설정해야 합니다. VBA의 ChartType 속성을 사용하여 차트의 유형을 지정할 수 있습니다.

Sub CreateChart()
    ' ...

    Dim ws As Worksheet
    Dim co As ChartObject
    Dim cht As Chart
    Dim rng As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set co = ws.ChartObjects.Add(Left:=100, Width:=300, Top:=100, Height:=200)
    Set cht = co.Chart
    
    Set rng = ws.Range("A1:C4")
    cht.SetSourceData Source:=rng

    cht.ChartType = xlColumnClustered

    ' ...
End Sub

축 제목 및 레전드 설정: 필요에 따라 축 제목과 레전드를 설정할 수 있습니다.

Sub CreateChart()
    ' ...

    Dim ws As Worksheet
    Dim co As ChartObject
    Dim cht As Chart
    Dim rng As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set co = ws.ChartObjects.Add(Left:=100, Width:=300, Top:=100, Height:=200)
    Set cht = co.Chart
    
    Set rng = ws.Range("A1:C4")
    cht.SetSourceData Source:=rng

    cht.ChartType = xlColumnClustered
    
    With cht.Axes(xlCategory, xlPrimary)
        .HasTitle = True
        .AxisTitle.Text = "Year"
    End With
    
    With cht.Axes(xlValue, xlPrimary)
        .HasTitle = True
        .AxisTitle.Text = "Sales / Cost"
    End With
    
    cht.HasLegend = True
    cht.Legend.Position = xlLegendPositionRight

    ' ...
End Sub

 

차트 스타일 설정: 차트의 스타일을 설정하여 시각적으로 보기 좋게 만들 수 있습니다.

Sub CreateChart()
    ' ...

    Dim ws As Worksheet
    Dim co As ChartObject
    Dim cht As Chart
    Dim rng As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set co = ws.ChartObjects.Add(Left:=100, Width:=300, Top:=100, Height:=200)
    Set cht = co.Chart
    
    Set rng = ws.Range("A1:C4")
    cht.SetSourceData Source:=rng

    cht.ChartType = xlColumnClustered
    
    With cht.Axes(xlCategory, xlPrimary)
        .HasTitle = True
        .AxisTitle.Text = "Year"
    End With
    
    With cht.Axes(xlValue, xlPrimary)
        .HasTitle = True
        .AxisTitle.Text = "Sales / Cost"
    End With
    
    cht.HasLegend = True
    cht.Legend.Position = xlLegendPositionRight
    
    cht.ChartStyle = 48

    ' ...
End Sub

 

차트 배치: 마지막으로, 차트를 엑셀 시트에 배치해야 합니다.

Sub CreateChart()
    ' ...

    Dim ws As Worksheet
    Dim co As ChartObject
    Dim cht As Chart
    Dim rng As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 차트 생성 및 위치 설정
    Set co = ws.ChartObjects.Add(Left:=100, Top:=100, Width:=300, Height:=200)
    co.Left = 100
    co.Top = 100
    
    Set cht = co.Chart
    
    Set rng = ws.Range("A1:C4")
    cht.SetSourceData Source:=rng

    cht.ChartType = xlColumnClustered
    
    With cht.Axes(xlCategory, xlPrimary)
        .HasTitle = True
        .AxisTitle.Text = "Year"
    End With
    
    With cht.Axes(xlValue, xlPrimary)
        .HasTitle = True
        .AxisTitle.Text = "Sales / Cost"
    End With
    
    cht.HasLegend = True
    cht.Legend.Position = xlLegendPositionRight
    
    cht.ChartStyle = 48

    ' ...
End Sub

위의 단계를 따라가면 엑셀 차트를 VBA를 사용하여 자동으로 작성할 수 있습니다. 이렇게 작성된 VBA 코드를 실행하면 엑셀 차트가 자동으로 생성되어 표시됩니다.


3. 마무리

VBA를 사용하면 엑셀 차트 작성을 자동화하는 것이 가능합니다. 복잡한 작업을 자동화하고 시간을 절약하면서 정확성을 유지할 수 있습니다. 앞으로 VBA를 활용하여 엑셀 차트 작성을 자동화하는 다양한 방법을 알아보세요. 

 

 

포스팅이 도움이 되셨다면 구독, 공감, 댓글 부탁드려요!

행복한 하루 되세요!

 

엑셀 VBA 차트