VBA 함수 중에서 날짜간의 간격을 알 수 있는 함수는 무엇을 있을까요? 이런 날짜 계산 함수는 아주 다양하게 쓰일 수 있습니다. 여자 친구의 생일, 수험 일자, 군대 입대일 등 현재부터 정 해진 날짜까지의 일, 월, 년, 주, 시간, 초 를 모두 함수 하나로 알아 낼 수 있습니다.
▼ 아래 함수에서처럼 시작과 끝나는 날짜 사이의 년도, 분기, 월의 간격을 DateDiff 함수로 구했습니다. DateDiff 를 실행해서 얻은 결과 값은 Debug.Print 함수로 콘솔에 출력했습니다.
Sub DateDiffFunction()
Dim dif As Long
dif = DateDiff("yyyy", "2003-12-15", "2013-12-15")
Debug.Print dif
dif = DateDiff("q", "2003-12-15", "2013-10-20")
Debug.Print dif
dif = DateDiff("m", "2003-12-15", "2013-10-20")
Debug.Print dif
End Sub
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 날짜 관련 함수 처리하는 다양한 방법 ▶ 엑셀 VBA 날짜 데이터를 비교하거나 연산하는 방법 ▶ 엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법 ▶ 엑셀 VBA 입력된 값 형식 확인할 수 있는 Information 관련 함수 모음 ▶ 엑셀 VBA 문서가 열릴 때 필요한 기능 구현하기 |
▼ DateDiff 의 문법은 다음과 같습니다. 날짜 간격에서 얻고 싶은 데이터의 종류는 첫 번째 인수인 interval에서 결정합니다. 그리고 date1, date2 에 시작과 종료 날짜를 입력합니다. firstdayofweek, firstweekofyear 두 인수는 필수 옵션이 아닙니다.
DateDiff( interval, date1, date2, [firstdayofweek], [firstweekofyear] )
◎ interval : 시간 간격의 단위를 나타내는 문자열 식을 지정한다. 아래 표 참고
설정 | 설명 |
yyyy | 년도 |
q | 분기 |
m | 월 |
y | 해당 연도의 일 |
d | 일 |
w | 주중 |
ww | 주 |
h | 시 |
n | 분 |
s | 초 |
◎ date1 과 date2 : 시간 간격에서 시작과 종료 날짜를 지정한다.
◎ firstdayofweek : 주의 시작 요일을 나타내는 정수를 지정한다. 생략하면 일요일이 지정된다. 어떤 요일을 지정하느냐에 따라 w, ww 의 값이 달라진다.
◎ firstweekofyear : 연도의 첫 째 주를 나타내는 상수로 생략하면 1월1일이 포함된 주가 1주가 된다.
DateDiff 함수를 이용해서 엑셀 시트에 없는 날짜 차이를 구하는 사용자 정의 함수를 만들었습니다. 인수로 시작 날짜와 종료 날짜를 입력하도록 했습니다. 좀더 개선한다면 interval 문자열을 인수로 받아 switch case 문을 사용해서 여러 종류의 시간 간격을 구하는 함수로 만들 수 있겠죠.
'' 일 차이를 구하는 함수
Function DiffDates(pDate1 As Date, pDate2 As Date) As Long
DiffDates = DateDiff("d", pDate1, pDate2)
End Function
▼ Visual Editor 창이 열리면 함수를 추가합니다.
▼ 함수 추가가 끝나면 수식입력기에서 함수를 찾을 수 있습니다. 셀에 DiffDates() 를 추가합니다.
▼ 추가한 함수에 필요한 인수를 입력합니다. 시작과 종료를 입력하면 날짜 차이를 계산해서 알려 줍니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 날짜 관련 함수 처리하는 다양한 방법 ▶ 엑셀 VBA 날짜 데이터를 비교하거나 연산하는 방법 ▶ 엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법 ▶ 엑셀 VBA 입력된 값 형식 확인할 수 있는 Information 관련 함수 모음 ▶ 엑셀 VBA 문서가 열릴 때 필요한 기능 구현하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 셀을 병합하는 Merge 함수 사용하기 (1) | 2023.12.30 |
---|---|
엑셀 VBA 문자열 자르기, LEFT RIGHT 함수를 이용해 문자열 추출하는 방법 (0) | 2023.12.23 |
엑셀 VBA 체크 박스 CheckBox 컨트롤 사용하기 (0) | 2023.12.20 |
엑셀 VBA 워크시트(Worksheet) 개체를 이용해서 시트 관리하기 (1) | 2023.12.17 |
엑셀 VBA 텍스트 내용을 읽어 와서 시트에 분리해서 넣는 방법 (3) | 2023.11.30 |
엑셀 VBA 함수 Time 사용해서 현재 시간 표시하기 (0) | 2023.11.28 |
엑셀 VBA 함수 Replace 문자열 내 문자 또는 문자열 대체하기 (0) | 2023.11.27 |
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 (1) | 2023.11.26 |