엑셀 VBA 만들어보기(feat.ChatGPT)
안녕하세요. 🥳 망분리세상에 길을 찾는 ruta 입니다.
엑셀을 사용하다 보면 본래 사용하는 함수외 대응해야 할 케이스들이 존재합니다.
이러한 케이스를 접하다 보면 이리저리 방법을 모색하다 결국 하나하나 노가다를 하는 저를 발견하게 됩니다.😂
(저희 회사는 엑셀2016을 사용중입니다.)
어떻게 하면 노가다를 하지 않을까 생각해보다 제 유료 동료(?) ChatGPT에게 물어보기로 했습니다.
Step1. ChatGPT에게 질문하기💁🏼
Prompt :
나는 엑셀2016을 사용중이야
아래 내용에 대해 좋은 솔루션을 제공해 주세요.
1. A1:E1 셀들에 각각 데이터들이 존재해
2. 각 셀들을 병합 하려고 해. 병합하는 셀들 사이에 , 가 있어야 해
제 업무환경은 엑셀 2016 버젼을 쓰고 있습니다.
해당 사례는 이리저리 방법을 찾다가 한땀한땀 노가다하여 진행했던 사례를 요청하였습니다. ( 아래 예시 참조 )
사례 예시
A1:E1까지 각각의 데이터 존재
A1 | B1 | C1 | D1 | E1 |
---|---|---|---|---|
기린 | 사슴 | 토끼 | 사자 | 호랑이 |
각 셀들을 병합 하려고 해. 병합하는 셀들 사이에 , 가 있어야 해
** → 기린,사슴,토끼,사자,호랑이**
해당 질문에 대해서 ChatGPT는 아래와 같은 답변을 제공해 주었습니다.
ChatGPT의 답변 확인해보기
참고 : https://chatgpt.com/share/ac53d035-b049-4576-aee7-878df20a536d
https://chatgpt.com/share/ac53d035-b049-4576-aee7-878df20a536d
저의 질문에 ChatGPT에게 단순 노가다 하는 방법을 조리있게 설명해 매우 실망하였습니다. 🤬
또한 사내의 엑셀버젼은 2016이기 때문에 TextJoin과 같은 엑셀상위 버젼의 함수 사용이 불가능한 상황입니다.
이때 더 똑똑한 방법이 없는지 물어 보았고 엑셀 VBA를 추천해주었습니다.
ChatGPT가 추천한 엑셀 VBA가 무엇일까요?
엑셀 VBA란?
엑셀에서 반복적이거나 복잡한 작업을 자동화할 수 있는 매크로 및 프로그래밍 도구입니다. 엑셀 내부에서 사용할 수 있는 비주얼 베이직 언어로, 사용자 지정 기능을 만들거나 데이터를 효율적으로 처리하는 데 활용됩니다. 특히 시간 절약과 업무 효율성을 크게 높일 수 있는 기능입니다.
굉장히 우리의 시간을 아껴줄 수 있는 자동화 방식이군요.
지체할 시간이 없습니다. 당장 엑셀 VBA를 활용 해봅시다.
Step2. ChatGPT 답변대로 해보기⌨️
우리가 해야할일
ChatGPT가 알려준 엑셀 VBA 환경 구성해보기
VBA 프로그래밍 스크립트 PC에 이식 및 실행
1. ChatGPT가 알려준 엑셀 VBA 환경 구성해보기
ChatGPT가 가이드 대로 따라해보기
**엑셀창을 키고 키보드의 ****"ALT + F11"**를 누르게 되면 아래 캡쳐 화면처럼 보이게 됩니다.
우측 상단 "삽입 → 모듈" 버튼을 누릅니다.
*좌측 프로젝트 바에 모듈이라는 폴더가 생기면 구성 완료!*
2. VBA 프로그래밍 스크립트 PC에 이식 및 실행
ChatGPT가 가이드 대로 따라해보기
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
ChatGPT가 작성한 내용을 Module1에 붙여넣기 합니다. ( 아래 캡쳐 참고 )
작업하던 창을 우측 상단의 최소화 버튼을 눌러 숨깁니다.
"ALT + F8"** 버튼을 눌러 아래와 같이 매크로 창을 생성합니다. 생성된 창에 ****MergeCellsWithComma ****항목이 생성되었는지 확인합니다. **
**항목이 확인되었으면 우측 ****"실행버튼"**을 클릭합니다.
실행 버튼 클릭 이후 원하는 결과물이 나왔는지 확인 합니다.
ChatGPT가 알려준 방식대로 진행하였더니 매우 효과적으로 데이터를 처리할 수 있었습니다. 🤩
진행하다 보니 동적으로 다른 데이터 셀에 내가 원하는 구분자를 넣을 수 있는 좋은 방법은 없을까 고민 하였고 지체없이 ChatGPT에게 질문하였습니다.
ChatGPT의 답변 확인해보기
ChatGPT는 저에게 **"사용자 정의 함수" **라는 방식을 추천하였습니다.
사용자 정의 함수(UDF, User Defined Function)란?
엑셀에서 사용자 정의 함수(UDF, User Defined Function)는 엑셀에 기본적으로 내장되어 있지 않은 함수를 사용자가 직접 정의하여 사용할 수 있도록 하는 기능입니다. 주로 복잡한 계산이나 반복적인 작업을 자동화할 때 사용되며, VBA(Visual Basic for Applications)라는 언어를 사용해 작성합니다.
이제 ChatGPT가 알려준 방법대로 따라 해보겠습니다.
ChatGPT가 가이드 대로 따라해보기
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
Module1의 스크립트 입력부에 ChatGPT가 작성해준 코드를 넣습니다.
코드를 작성 후 엑셀창으로 돌아옵니다. 저는 A2셀에서 사용자정의함수를 썻고
ChatGPT가 작성한 이름으로 함수를 호출하였습니다.
=MergeCellsWithComma(A1:E1)
A2셀에 사용자가 원하는 답변이 나왔는지 확인합니다.
, 외에 다른 구분자를 넣고 싶으면 아래 항목을 변경하면 됩니다.
저는 / 구분자를 넣어 보았습니다.
해당 작업을 마치며..
각 회사마다 엑셀환경이 제각각 다르고 최신 엑셀에서 제공하지 않는 함수들에 대한 니즈가 있을 것이라 생각해 작업해 보았습니다.
제 작업은 단순히 단어마다 구분자를 넣었지만 엑셀을 많이 사용하시는 분들에 따라 매번 노가다 하던 작업들을 자동화 시키는데 엑셀 VBA가 매우 큰 활용을 하실 것이라 판단 됩니다.
앞으로도 폐쇄망에서도 사용할 수 있는 자동화 방법들이 있다면 많이 공유하겠습니다.
이상 ruta 였습니다!!!