본문 바로가기
정보/IT

[Excel] ChatGPT로 엑셀 VBA 사용하기

by 얼죽아토 2024. 4. 2.


 

회사에서나 스스로도 엑셀로 반복되는 많은 데이터를 정리해야 하는 순간들이 있습니다. 그런 일들을 할 때 엑셀 VBA를 사용하면 반복되는 내용들을 빠르고 효율적으로 진행할 수 있습니다. 그리고 그걸 AI가 도와준다면? 더 빠르게 진행할 수 있습니다.

 

이번 포스팅은 ChatGPT를 사용하여 VBA를 만들고, 만들어진 VBA를 엑셀에 넣는 방법에 대해 간단한 예시와 함께 작성하였습니다.


※ VBA는 무엇인가?

VBA는 'Visual Basic for Applications'의 약자입니다.

마이크로소프트의 프로그래밍 언어인 Visual Basic을 기반으로 한 응용 프로그램 내부에서 사용되는 프로그래밍 언어입니다. 마이크로소프트 오피스 프로그램인 Excel, Word, PowerPoint 등과 같은 프로그램에서 사용됩니다.

VBA를 사용하면 오피스 프로그램에서 진행하는 업무들에 자동화를 넣을 수 있어 사용자의 작업 효율을 높이고 시간을 절약할 수 있습니다.


① 엑셀에서 '개발 도구' 탭 ON

처음에 엑셀을 키게되면 상단에 있는 리본 메뉴바에 [개발 도구] 탭이 표시되지 않습니다.

[개발 도구] 탭에서 VBA를 사용할 수 있음으로 먼저 엑셀에서 [개발 도구] 탭을 표시하게 변경해주어야 합니다.

 

ⓐ 엑셀 리본 메뉴바 > [파일] 탭 선택

 

ⓑ 좌측 하단 [옵션] 선택

 

ⓒ [리본 사용자 지정] 선택 > [개발 도구] 체크박스 선택 > [확인] 선택

 

ⓓ 엑셀 리본 메뉴바 확인


② 저장 파일 형식

엑셀 내에서 매크로를 사용하기 위해서는 엑셀 파일 형식을 'Excel 매크로 사용 통합 문서'로 설정해주셔야 합니다. 안 그러면 열심히 매크로를 만들어도 매크로가 사용되지 않습니다.


③ 엑셀 > 데이터 시트 생성

엑셀에서 업무에서 필요한 데이터들을 어떤 열과 행에 사용할 것인지에 대해서 미리 입력을 해두어야 합니다.

아래 이미지처럼 4개의 점수를 받고 각 행마다의 합계 및 평균을 구하는 시트를 예시로 생성하였습니다.


④ VBA 생성하기

각 버튼에 VBA를 생성하는 과정을 간단한 예제를 통해 알아보겠습니다. 여기서 진행해 볼 예제는 2개입니다.

  • 예제 1) [랜덤 점수] 버튼을 선택하면 100점 이내의 랜덤 한 점수를 만들기
  • 예제 2) [계산] 버튼을 선택하면 각 행마다의 점수 합계 및 평균 계산하기

 

예제 1) 랜덤 점수 만들기

점수 데이터가 있어야 점수들의 합계 및 평균을 구할 수 있기 때문에 랜덤 점수를 만드는 VBA부터 진행해 보겠습니다.

[랜덤 점수] 버튼을 선택하면 C3부터 F17까지의 셀에 100점 이내의 점수를 랜덤으로 생성해 주는 VBA를 만들 것이기 때문에 [랜덤 점수] 버튼을 우클릭하여 [매크로 지정]을 선택합니다.

 

매크로 지정 팝업에서 매크로 이름을 작성 후 [새로 만들기]를 선택합니다. 그럼 자동으로 VBA 화면으로 진입합니다.

 

사실 간단한 내용이기 때문에 ChatGPT까지 필요하지 않을 수 있지만, 해당 포스팅에서는 ChatGPT를 사용한 매크로 만들기임으로 ChatGPT에게 가서 VBA코딩을 요청합니다. 이때 최대한 구체적으로 질문을 해야 정확한 VBA코딩을 해서 알려주기 때문에 행/열에 대해서도 같이 질문해 주면 좋습니다.

  • ChatGPT가 VBA 코드를 만들어주면 상단에 있는 [Copy code]를 선택하여 복사합니다.
  • 복사한 것을 그대로 VBA 화면의 모듈 안에 붙여 넣기 후 저장합니다.

Sub RandomNum()
    Dim ws As Worksheet
    Dim i As Integer, j As Integer
    Dim score As Integer
    
    ' 현재 활성화된 시트를 가져옵니다. 만약 다른 시트에서 실행하려면 시트의 이름을 변경하세요.
    Set ws = ActiveSheet
    
    ' C3부터 F17까지 루프를 돌며 각 셀에 랜덤한 값을 할당합니다.
    For i = 3 To 17 ' 행
        For j = 3 To 6 ' 열
            ' 랜덤한 점수 생성
            score = Int((100 - 0 + 1) * Rnd + 0)
            ' 셀에 점수 할당
            ws.Cells(i, j).Value = score
        Next j
    Next i
End Sub

 

다시 엑셀 화면으로 돌아와서 [랜덤 점수] 버튼을 선택하면 랜덤 점수가 생성되는 것을 확인할 수 있습니다.

 

 

예제 2) 점수 합계 및 평균 계산

점수 데이터가 예제 1을 통해 전부 입력되었다면 이제 각 행마다의 합계 및 평균 점수를 얻을 수 있는 매크로를 생성해 봅시다. 예제 1과 같은 방법으로 이번엔 [계산] 버튼에 우클릭 후 [매크로 지정]을 선택합니다.

 

매크로 지정 팝업에서 매크로 이름을 작성 후 [새로 만들기]를 선택 VBA 화면으로 진입합니다.

이전에 이미 만든 매크로가 존재한다면 그 밑에 새로 생성됩니다.

 

ChatGPT에게 가서 VBA코딩을 요청합니다.

  • ChatGPT가 VBA 코드를 만들어주면 상단에 있는 [Copy code]를 선택하여 복사합니다.
  • 복사한 것을 그대로 VBA 화면의 모듈 안에 붙여 넣기 후 저장합니다.

Sub SumAndAverage()
    Dim ws As Worksheet
    Dim i As Integer, j As Integer
    Dim scoreSum As Double
    Dim scoreCount As Integer
    Dim scoreAverage As Double
    
    ' 현재 활성화된 시트를 가져옵니다. 만약 다른 시트에서 실행하려면 시트의 이름을 변경하세요.
    Set ws = ActiveSheet
    
    ' 각 행마다의 점수 합계와 평균을 계산합니다.
    For i = 3 To 17 ' 행
        ' 초기화
        scoreSum = 0
        scoreCount = 0
        
        ' 행마다의 점수 합계 및 평균 계산
        For j = 3 To 6 ' 열
            If IsNumeric(ws.Cells(i, j).Value) Then
                scoreSum = scoreSum + ws.Cells(i, j).Value
                scoreCount = scoreCount + 1
            End If
        Next j
        
        ' 점수 합계 출력
        ws.Cells(i, 8).Value = scoreSum
        
        ' 점수 평균 계산 및 출력
        If scoreCount > 0 Then
            scoreAverage = scoreSum / scoreCount
            ws.Cells(i, 9).Value = scoreAverage
        Else
            ws.Cells(i, 9).Value = "N/A"
        End If
    Next i
End Sub

 

다시 엑셀 화면으로 돌아와서 [계산] 버튼을 선택하면 합계 및 평균 점수가 생성되는 것을 확인할 수 있습니다.


 

이번 포스팅이 효율적인 업무를 위해 도움이 되었으면 좋겠습니다. 포스팅 봐주셔서 감사합니다.