Share
Sign In
⌨️ 개발 해보기(feat.ChatGPT)
엑셀 VBA 만들어보기(feat.ChatGPT)
ruta
1
👍
안녕하세요. 🥳 망분리세상에 길을 찾는 ruta 입니다.
엑셀을 사용하다 보면 본래 사용하는 함수외 대응해야 할 케이스들이 존재합니다.
이러한 케이스를 접하다 보면 이리저리 방법을 모색하다 결국 하나하나 노가다를 하는 저를 발견하게 됩니다.😂
어떻게 하면 노가다를 하지 않을까 생각해보다 제 유료 동료(?) ChatGPT에게 물어보기로 했습니다.
Step1. ChatGPT에게 질문하기💁🏼
Prompt : 나는 엑셀2016을 사용중이야 아래 내용에 대해 좋은 솔루션을 제공해 주세요. 1. A1:E1 셀들에 각각 데이터들이 존재해 2. 각 셀들을 병합 하려고 해. 병합하는 셀들 사이에 , 가 있어야 해
제 업무환경은 엑셀 2016 버젼을 쓰고 있습니다.
해당 사례는 이리저리 방법을 찾다가 한땀한땀 노가다하여 진행했던 사례를 요청하였습니다. ( 아래 예시 참조 )
🔎
사례 예시
1.
A1:E1까지 각각의 데이터 존재
A1
B1
C1
D1
E1
기린
사슴
토끼
사자
호랑이
2.
각 셀들을 병합 하려고 해. 병합하는 셀들 사이에 , 가 있어야 해
→ 기린,사슴,토끼,사자,호랑이
해당 질문에 대해서 ChatGPT는 아래와 같은 답변을 제공해 주었습니다.
저의 질문에 ChatGPT에게 단순 노가다 하는 방법을 조리있게 설명해 매우 실망하였습니다. 🤬
또한 사내의 엑셀버젼은 2016이기 때문에 TextJoin과 같은 엑셀상위 버젼의 함수 사용이 불가능한 상황입니다.
이때 더 똑똑한 방법이 없는지 물어 보았고 엑셀 VBA를 추천해주었습니다.
ChatGPT가 추천한 엑셀 VBA가 무엇일까요?
🤔
엑셀 VBA란?
엑셀에서 반복적이거나 복잡한 작업을 자동화할 수 있는 매크로 및 프로그래밍 도구입니다. 엑셀 내부에서 사용할 수 있는 비주얼 베이직 언어로, 사용자 지정 기능을 만들거나 데이터를 효율적으로 처리하는 데 활용됩니다. 특히 시간 절약과 업무 효율성을 크게 높일 수 있는 기능입니다.
굉장히 우리의 시간을 아껴줄 수 있는 자동화 방식이군요.
지체할 시간이 없습니다. 당장 엑셀 VBA를 활용 해봅시다.
Step2. ChatGPT 답변대로 해보기⌨️
💬
우리가 해야할일
1.
ChatGPT가 알려준 엑셀 VBA 환경 구성해보기
2.
VBA 프로그래밍 스크립트 PC에 이식 및 실행
1. ChatGPT가 알려준 엑셀 VBA 환경 구성해보기
ChatGPT가 가이드 대로 따라해보기
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
2.
ChatGPT가 작성한 내용을 Module1에 붙여넣기 합니다. ( 아래 캡쳐 참고 )
3.
작업하던 창을 우측 상단의 최소화 버튼을 눌러 숨깁니다.
4.
"ALT + F8" 버튼을 눌러 아래와 같이 매크로 창을 생성합니다. 생성된 창에 MergeCellsWithComma 항목이 생성되었는지 확인합니다.
5.
항목이 확인되었으면 우측 "실행버튼"을 클릭합니다.
6.
실행 버튼 클릭 이후 원하는 결과물이 나왔는지 확인 합니다.
ChatGPT가 알려준 방식대로 진행하였더니 매우 효과적으로 데이터를 처리할 수 있었습니다. 🤩
진행하다 보니 동적으로 다른 데이터 셀에 내가 원하는 구분자를 넣을 수 있는 좋은 방법은 없을까 고민 하였고 지체없이 ChatGPT에게 질문하였습니다.
ChatGPT의 답변 확인해보기
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
2.
Module1의 스크립트 입력부에 ChatGPT가 작성해준 코드를 넣습니다.
3.
코드를 작성 후 엑셀창으로 돌아옵니다. 저는 A2셀에서 사용자정의함수를 썻고
ChatGPT가 작성한 이름으로 함수를 호출하였습니다.
=MergeCellsWithComma(A1:E1)
4.
A2셀에 사용자가 원하는 답변이 나왔는지 확인합니다.
5. , 외에 다른 구분자를 넣고 싶으면 아래 항목을 변경하면 됩니다.
저는 / 구분자를 넣어 보았습니다.
해당 작업을 마치며..
각 회사마다 엑셀환경이 제각각 다르고 최신 엑셀에서 제공하지 않는 함수들에 대한 니즈가 있을 것이라 생각해 작업해 보았습니다.
제 작업은 단순히 단어마다 구분자를 넣었지만 엑셀을 많이 사용하시는 분들에 따라 매번 노가다 하던 작업들을 자동화 시키는데 엑셀 VBA가 매우 큰 활용을 하실 것이라 판단 됩니다.
앞으로도 폐쇄망에서도 사용할 수 있는 자동화 방법들이 있다면 많이 공유하겠습니다.
이상 ruta 였습니다!!!
Subscribe to 'ruta'
Welcome to 'ruta'!
By subscribing to my site, you'll be the first to receive notifications and emails about the latest updates, including new posts.
Join SlashPage and subscribe to 'ruta'!
Subscribe
1
👍
    무늬만싱글
    훌륭함
ruta
데일리 메모장 자동화 스크립트로 만들기(feat.ChatGPT)
안녕하세요. 🥳 망분리세상에 길을 찾는 ruta 입니다. 업무상 매일일지 작성,관리하고 있습니다. 또한 일별로 주고 받은 파일을 당일자 이름을 가진 폴더에 관리하고 있습니다. 그러다 보니 매일 사용하는 일지에 대한 텍스트 파일이나 특정일자 폴더를 생성하고 있습니다. 어떻게 하면 좋을까 생각해보다 제 유료 동료(?) ChatGPT에게 물어보기로 했습니다. Step1. ChatGPT에게 질문하기💁🏼 제 업무환경은 Window10 이고 D드라이브 안 Daily라는 폴더에서 해당 업무일지를 관리하고 있습니다. 저는 bat파일 형태로 만들어 달라고 요청하였습니다. 해당 파일형태는 우리가 윈도우를 쓰면서 사용하는 파일 복사/붙여넣기, 파일명 변경 등을 미리 명령어를 예약모음집이라 보시면 됩니다. ( 여기서는 편의를 위해 스크립트라 지칭하겠습니다. ) 그리고 저는 7시40분에 출근완료하기 때문에 7시 정도에는 미리 만들어 달라고 요청했습니다.