본문 바로가기
업무스킬업/AI

챗지피티를 활용한 엑셀 VBA 코드 - 근무일수 년월일 표기

by 키미캐비 2024. 3. 16.

챗지피티를 활용하여 효율적인 업무가 무엇이 있을까 고민하다가, 예전에 근무일수 표기하는 엑셀 함수를 네이버에서 검색하여 사용했던 기억이 나서 다시 한번 정리해 봤습니다.

DATEDIF 함수 활용법

아래 내용은 그 방법을 적용하여 엑셀에서 일반적으로 함수를 이용하며 값을 찾아내어 표기하는 방법입니다.

입사일 오늘
2017-06-07 2024-03-16      

 

위와 같이 입사일 기준으로 =today() 함수를 넣어 오늘 기준을 설정해주고,

년 셀에는 =DATEDIF(입사일날짜셀,오늘날짜셀,"y") 이렇게 설정하면 아래와 같이 6년이라고 나옵니다.

입사일 오늘
2017-06-07 2024-03-16 6    

 

월 셀에는 =DATEDIF(입사일날짜셀,오늘날짜셀,"ym"), 일 셀에는 DATEDIF(입사일날짜셀,오늘날짜셀,"md")

입사일 오늘
2017-06-07 2024-03-16 6 9 9

 

이렇게 입사일과 오늘 기준으로 년/월/일 셀로 나누어 각각 함수를 넣어주면 위와 같이 값이 자동계산되어 표기됩니다.

 

자, 그럼 이제 ChatGpt에게 질문을 해봤습니다.

이렇게, 보기 좋게 테이블까지 만들어서 결과를 보여줍니다. 물론 처음부터 근속연수 년월일로 표현해 줘라고 했으면 하는데, 챗지피티는 대화형 AI라 부족한 부분이 있으면 계속 질문하면 됩니다.

 

 

다음, 위와 같이 입사일 기준으로 근무일수 셀도 만들어줘 하니깐, 년월일이 나오지 않아, 다시 한번 저는 "년월일로 구분하는 함수를 만들어줘"라고 질문을 합니다.

 

그런데, 갑자기 VBA함수 만들기라고 하면서 아래의 코드 화면이 나오는 것입니다.

저는 업무 하면서 엑셀 함수만 넣어서 기본적인 것들만 그냥 했는데, 챗지피티 때문에 엑셀에서 개발도구라는 탭이 있는 것과 VBA라는 편집기가 있다는 것을 처음 알게 되었습니다.

 

그리고, 챗지피티가 하라는 대로 따라 해 봤더니, 너무나도 값이 쉽게 나와 버렸습니다. 정말 조금만 더 응용하면 더 복잡한 데이터도 추출하는 의도에 따라 위의 코드를 몰라도 챗지피티가 다 만들어주니 명령만 잘하면 된다는 결론이 났습니다.

직원 ID 이름 위치 부서 시작일 고용현황 근무일수 근무기간
1 존 도우 프로젝트 관리자 IT 2020-01-10 풀타임 1091 2 년 12 월 1 일
2 제인 스미스 분석가 마케팅 2021-05-15 파트타임 740 2 년 0 월 10 일
3 밥 존슨 개발자 개발 2024-03-14 계약 2 0 년 0 월 2 일

 

결국 함수를 새롭게 모듈로 만들어서 그 만든 함수명을 셀에 입력하면 바로 위 코드의 지시대로 값을 표현하게 됩니다. VBA 편집기에서 만든 함수명은 WORKING_DAYS_YMD(E4) 입니다. 그리고 함수명도 내 마음대로 만들 수 있겠죠.

 

사실 엑셀에서 VBA 편집기라는 것을 다루는 것도 생소할 수 있지만, 회사생활을 15년을 넘게 하면서 엑셀의 기능이 이렇게 다양한지는 처음 알았습니다.

VBA 함수 만들기
Excel에서 Alt + F11 키를 눌러 VBA 편집기를 엽니다.
메뉴에서 삽입 > 모듈을 선택하여 새 모듈을 만듭니다.
VBA 코드를 모듈 창에 붙여 넣습니다:
Function WORKING_DAYS_YMD(startDate As Date) As String
 Dim totalDays As Long, workingDays As Long
 Dim endDate As Date
 Dim years As Long, months As Long, days As Long
 Dim dayCounter As Date

 endDate = Now
 totalDays = 0
 workingDays = 0

 For dayCounter = startDate To endDate
 If Weekday(dayCounter, vbMonday) > 5 Then
   totalDays = totalDays + 1
  Else
   workingDays = workingDays + 1
  End If
 Next dayCounter

 ' Convert working days to years, months, days
 years = workingDays \ 365
 months = (workingDays Mod 365) \ 30
 days = (workingDays Mod 365) Mod 30

 WORKING_DAYS_YMD = years & " Years, " & months & " Months, " & days & " Days"
End Function

 

WORKING_DAYS_YMD.txt
0.00MB

 

VBA 편집기를 닫고 Excel로 돌아갑니다.

함수 사용 방법:
새로 만든 WORKING_DAYS_YMD 함수를 셀에 입력합니다. 예를 들어, A1 셀에 시작 날짜가 있고 결과를 B1 셀에 표시하고 싶다면, B1 셀에 =WORKING_DAYS_YMD(A1)을 입력합니다. 근무일수를 연, 월, 일로 계산하여 문자열 형태로 반환합니다.