엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하는 방법

엑셀(Excel)/VBA

엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하는 방법

 

환경: Microsoft Excel 2013

 

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 날짜 차이를 계산하는 DateDiff 함수 사용하는 방법

 

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 : 연도의 첫 째 주를 나타내는 상수로 생략하면 11일이 포함된 주가 1주가 된다.

 

DateDiff 함수를 이용해서 엑셀 시트에 없는 날짜 차이를 구하는 사용자 정의 함수를 만들었습니다. 인수로 시작 날짜와 종료 날짜를 입력하도록 했습니다. 좀더 개선한다면 interval 문자열을 인수로 받아 switch case 문을 사용해서 여러 종류의 시간 간격을 구하는 함수로 만들 수 있겠죠.

 

'' 일 차이를 구하는 함수

Function DiffDates(pDate1 As Date, pDate2 As Date) As Long

 

   DiffDates = DateDiff("d", pDate1, pDate2)

 

End Function

 

 Visual Editor 창이 열리면 함수를 추가합니다

엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하는 방법

 

 함수 추가가 끝나면 수식입력기에서 함수를 찾을 수 있습니다. 셀에 DiffDates() 를 추가합니다

엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하는 방법


 추가한 함수에 필요한 인수를 입력합니다. 시작과 종료를 입력하면 날짜 차이를 계산해서 알려 줍니다.

엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하는 방법

Posted by 녹두장군