엑셀 VBA에서는 자신만의 함수, 즉 사용자 정의 함수를 만들 수 있습니다.
이번 글에서는 간단한 예시로 사용자 정의 함수를 만드는 방법을 소개하고, 날짜 형식을 변환하는 함수를 공유하도록 하겠습니다. 더불어 이번 글에서 소개한 함수들 파일을 아래에 첨부하겠습니다.
#1. 사용자 정의 함수 만들기
Function 큰숫자호출(숫자1, 숫자2) // 숫자비교는 함수 이름을, 숫자1과 숫자2는 변수를 의미함 If 숫자1 > 숫자2 Then 큰숫자호출 = 숫자1 Else 큰숫자호출 = 숫자2 End If // 숫자 비교 결과 호출 구문 End Function |
▲ 위의 사용자 정의 함수 구문은 두 개의 숫자를 비교하는 간단한 함수입니다. 일반적인 매크로가 Sub으로 시작하는 반면, 사용자 정의 함수를 만들 때에는 Function을 입력합니다. Function을 입력할 시 End Function은 자동적으로 생성됩니다.
그 이후 Function 옆에 함수이름(변수1 as 변수 종류, 변수2 as 변수 종류...)를 입력합니다. 변수 종류(double, integer, string 등)를 생략할 시 임의의 변수인 variant로 설정됩니다.
이후, 함수 이름과 변수들을 이용하여 매크로 구문을 만들면 사용자 정의 함수가 완성됩니다.
▲ 위의 큰숫자호출 함수를 활용한 예시입니다.
#2. 날짜형식 변환 함수 소개(YYYYMMDD ↔ YYYY-MM-DD)
이번에는 좀 더 실용적인 함수 2개를 소개하겠습니다.
1. numtodate() : YYYYMMDD를 YYYY-MM-DD 형태로 변환
Function numtodate(num) numtodate = DateSerial(Left(CStr(num), 4), Mid(CStr(num), 5, 2), Right(CStr(num), 2)) End Function |
▲ 위의 사진처럼 numtodate(20240101)을 입력하면 숫자 '20240101'이 날짜 형태 '2024-01-01'로 변환됩니다.
2. datetonum() : YYYY-MM-DD를 YYYYMMDD 형태로 변환
Function datetonum(datevalue) datetonum = Year(datevalue) & Application.Text(Month(datevalue), "0#") & Application.Text(Day(datevalue), "0#") End Function |
▲ 위의 사진처럼 datetonum("2024-01-01")을 입력하면 날짜 형식의 '2024-01-01'이 숫자형식 20240101로 변환됩니다.
이처럼 사용자 정의 함수는 상황에 따라 엑셀에서 기본적으로 제공하는 함수보다 편리하게 활용할 수 있습니다. 또 다른 예를 들면, MS 오피스 2021 이전 버전에서도 XLOOKUP 함수를 구현할 수 있기도 합니다. 다만 매번 새로 만들면 비효율적일 수 있어서, 모듈 파일(bas 파일)을 가져오거나 엑셀 추가 기능 'xlam 파일'을 생성하는 것을 추천드립니다. 향후 xlam 파일을 만들고, 기능을 추가하는 방법도 소개해 드리겠습니다.
'엑셀, VBA, 파워쿼리 > VBA 매크로' 카테고리의 다른 글
[VBA 매크로] 매크로 추가기능 파일(xlam 파일)로 매크로 사용하기 (1) | 2024.11.13 |
---|---|
[VBA 매크로] Offset과 Resize로 데이터 범위 참조 및 조정하기(기존 데이터 지우기) (0) | 2024.08.25 |
[VBA 매크로] OFFSET 프로퍼티 소개(셀, 범위 이동) (0) | 2024.06.25 |
[VBA 매크로] Rows.Count와 Columns.Count로 데이터 범위 행 수와 열 수 구하기 (0) | 2024.06.25 |
[VBA 매크로] Resize 프로퍼티로 범위 선택하기(Range.Resize) (0) | 2024.05.14 |
댓글