검색
검색
공개 노트 검색
회원가입로그인

엑셀 VBA 만들어보기(feat.ChatGPT)

안녕하세요. 🥳 망분리세상에 길을 찾는 ruta 입니다.

엑셀을 사용하다 보면 본래 사용하는 함수외 대응해야 할 케이스들이 존재합니다.

이러한 케이스를 접하다 보면 이리저리 방법을 모색하다 결국 하나하나 노가다를 하는 저를 발견하게 됩니다.😂

(저희 회사는 엑셀2016을 사용중입니다.)

어떻게 하면 노가다를 하지 않을까 생각해보다 제 유료 동료(?) ChatGPT에게 물어보기로 했습니다.

Step1. ChatGPT에게 질문하기💁🏼

Prompt : 
나는 엑셀2016을 사용중이야

아래 내용에 대해 좋은 솔루션을 제공해 주세요.

1.  A1:E1 셀들에 각각 데이터들이 존재해
2.  각 셀들을 병합 하려고 해. 병합하는 셀들 사이에 , 가 있어야 해

제 업무환경은 엑셀 2016 버젼을 쓰고 있습니다.

해당 사례는 이리저리 방법을 찾다가 한땀한땀 노가다하여 진행했던 사례를 요청하였습니다. ( 아래 예시 참조 )

사례 예시

  1. A1:E1까지 각각의 데이터 존재

A1B1C1D1E1
기린사슴토끼사자호랑이
  1. 각 셀들을 병합 하려고 해. 병합하는 셀들 사이에 , 가 있어야 해

** → 기린,사슴,토끼,사자,호랑이**

해당 질문에 대해서 ChatGPT는 아래와 같은 답변을 제공해 주었습니다.

ChatGPT의 답변 확인해보기

참고 : https://chatgpt.com/share/ac53d035-b049-4576-aee7-878df20a536d

https://chatgpt.com/share/ac53d035-b049-4576-aee7-878df20a536d

Image

저의 질문에 ChatGPT에게 단순 노가다 하는 방법을 조리있게 설명해 매우 실망하였습니다. 🤬

또한 사내의 엑셀버젼은 2016이기 때문에 TextJoin과 같은 엑셀상위 버젼의 함수 사용이 불가능한 상황입니다.

이때 더 똑똑한 방법이 없는지 물어 보았고 엑셀 VBA를 추천해주었습니다.

ChatGPT가 추천한 엑셀 VBA가 무엇일까요?

엑셀 VBA란?

엑셀에서 반복적이거나 복잡한 작업을 자동화할 수 있는 매크로 및 프로그래밍 도구입니다. 엑셀 내부에서 사용할 수 있는 비주얼 베이직 언어로, 사용자 지정 기능을 만들거나 데이터를 효율적으로 처리하는 데 활용됩니다. 특히 시간 절약과 업무 효율성을 크게 높일 수 있는 기능입니다.

굉장히 우리의 시간을 아껴줄 수 있는 자동화 방식이군요.

지체할 시간이 없습니다. 당장 엑셀 VBA를 활용 해봅시다.

Step2. ChatGPT 답변대로 해보기⌨️

우리가 해야할일

  1. ChatGPT가 알려준 엑셀 VBA 환경 구성해보기

  2. VBA 프로그래밍 스크립트 PC에 이식 및 실행

1. ChatGPT가 알려준 엑셀 VBA 환경 구성해보기

ChatGPT가 가이드 대로 따라해보기

  1. **엑셀창을 키고 키보드의 ****"ALT + F11"**를 누르게 되면 아래 캡쳐 화면처럼 보이게 됩니다.

Image


  1. 우측 상단 "삽입 → 모듈" 버튼을 누릅니다.

Image


  1. *좌측 프로젝트 바에 모듈이라는 폴더가 생기면 구성 완료!*

Image


2. VBA 프로그래밍 스크립트 PC에 이식 및 실행

ChatGPT가 가이드 대로 따라해보기

  1. ChatGPT가 작성해준 VBA 스크립트를 확인 및 복사 합니다.

Sub MergeCellsWithComma()
    Dim rng As Range
    Dim cell As Range
    Dim mergedText As String

    ' 병합하려는 범위 설정 (A1:E1)
    Set rng = Range("A1:E1")
    
    ' 병합될 텍스트를 초기화
    mergedText = ""
    
    ' 각 셀을 순회하면서 값을 쉼표로 연결
    For Each cell In rng
        If mergedText = "" Then
            mergedText = cell.Value
        Else
            mergedText = mergedText & "," & cell.Value
        End If
    Next cell
    
    ' 병합된 값을 A1에 넣고, 다른 셀은 비웁니다.
    rng.ClearContents
    Range("A1").Value = mergedText
End Sub

  1. ChatGPT가 작성한 내용을 Module1에 붙여넣기 합니다. ( 아래 캡쳐 참고 )

Image


  1. 작업하던 창을 우측 상단의 최소화 버튼을 눌러 숨깁니다.

Image


  1. "ALT + F8"** 버튼을 눌러 아래와 같이 매크로 창을 생성합니다. 생성된 창에 ****MergeCellsWithComma ****항목이 생성되었는지 확인합니다. **

  2. **항목이 확인되었으면 우측 ****"실행버튼"**을 클릭합니다.

Image


  1. 실행 버튼 클릭 이후 원하는 결과물이 나왔는지 확인 합니다.

Image


ChatGPT가 알려준 방식대로 진행하였더니 매우 효과적으로 데이터를 처리할 수 있었습니다. 🤩

진행하다 보니 동적으로 다른 데이터 셀에 내가 원하는 구분자를 넣을 수 있는 좋은 방법은 없을까 고민 하였고 지체없이 ChatGPT에게 질문하였습니다.

ChatGPT의 답변 확인해보기

Image

ChatGPT는 저에게 **"사용자 정의 함수" **라는 방식을 추천하였습니다.

사용자 정의 함수(UDF, User Defined Function)란?

엑셀에서 사용자 정의 함수(UDF, User Defined Function)는 엑셀에 기본적으로 내장되어 있지 않은 함수를 사용자가 직접 정의하여 사용할 수 있도록 하는 기능입니다. 주로 복잡한 계산이나 반복적인 작업을 자동화할 때 사용되며, VBA(Visual Basic for Applications)라는 언어를 사용해 작성합니다.

이제 ChatGPT가 알려준 방법대로 따라 해보겠습니다.

ChatGPT가 가이드 대로 따라해보기

  1. ChatGPT가 제공해준 스크립트를 확인 합니다.

Function MergeCellsWithComma(rng As Range, Optional delimiter As String = ",") As String
    Dim cell As Range
    Dim mergedText As String

    ' 병합할 텍스트 초기화
    mergedText = ""
    
    ' 각 셀을 순회하면서 값을 delimiter로 연결
    For Each cell In rng
        If mergedText = "" Then
            mergedText = cell.Value
        Else
            mergedText = mergedText & delimiter & cell.Value
        End If
    Next cell
    
    ' 병합된 텍스트를 반환
    MergeCellsWithComma = mergedText
End Function

  1. Module1의 스크립트 입력부에 ChatGPT가 작성해준 코드를 넣습니다.

Image


  1. 코드를 작성 후 엑셀창으로 돌아옵니다. 저는 A2셀에서 사용자정의함수를 썻고

ChatGPT가 작성한 이름으로 함수를 호출하였습니다.

=MergeCellsWithComma(A1:E1)

Image


  1. A2셀에 사용자가 원하는 답변이 나왔는지 확인합니다.

Image


  1. , 외에 다른 구분자를 넣고 싶으면 아래 항목을 변경하면 됩니다.

    저는 / 구분자를 넣어 보았습니다.

Image

Image

Image


해당 작업을 마치며..

각 회사마다 엑셀환경이 제각각 다르고 최신 엑셀에서 제공하지 않는 함수들에 대한 니즈가 있을 것이라 생각해 작업해 보았습니다.

제 작업은 단순히 단어마다 구분자를 넣었지만 엑셀을 많이 사용하시는 분들에 따라 매번 노가다 하던 작업들을 자동화 시키는데 엑셀 VBA가 매우 큰 활용을 하실 것이라 판단 됩니다.

앞으로도 폐쇄망에서도 사용할 수 있는 자동화 방법들이 있다면 많이 공유하겠습니다.

이상 ruta 였습니다!!!

Image

공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
조회수 : 67
heart
T
페이지 기반 대답
AI Chat