Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 날짜 관련 함수, 개체 사용하는 방법

엑셀(Excel)/VBA
반응형

VBA 에는 사용할 수 있는 날짜 관련 함수 및 개체가 많을 뿐만 아니라 자주 쓰입니다. 날짜 연산을 위해 현재 시간을 알려 주는 여러 개체부터 하나씩 알아보겠습니다. 그리고 날짜 개체를 통해 각 년, , , 시간, , 초 를 뽑아 내는 함수도 알아볼 것입니다. 마지막으로 날짜 계산할 때 사칙연산이 아닌 함수로 더하거나 빼는 방법도 알려드립니다. .

 

현재 시점의 시간 알아 오기

 

엑셀에서 제공하는 시간 개체는 3가지가 있습니다. 모드 현재 시간을 알수가 있는데 개체마다 특징이 있습니다. Now 는 시간까지 포함한 전체 시간을, Date 는 날짜와 요일을, Time 은 시간만 알려 줍니다. 아래 샘플 소스로 확인할 수 있습니다.

 

l Now : 날짜, 요일, 시간까지 표시된다. 전체 시간을 알수가 있다.

dt = Now
MsgBox dt

엑셀 VBA 날짜 관련 함수 처리하는 다양한 방법

 

l Date : Now 와 달리 날짜와 요일만 표시된다. 

dt = Date
MsgBox dt

엑셀 VBA 날짜 관련 함수 처리하는 다양한 방법

 

l Time : 시간만 표시된다.

dt = Time
MsgBox dt

엑셀 VBA 날짜 관련 함수 처리하는 다양한 방법

 

 

원하는 시간을 뽑아 내고 싶을 때

 

프로그램 작업을 하다 보면 현재 시간이나 날짜 개체에서 년도나 월, 요일을 별도로 추출해야 되는 경우가 있습니다. 엑셀에는 날짜에 년도와 월, 일을 추출할 수 있는 함수들이 별도로 존재합니다. 함수에 넘기는 인수 값은 날짜 개체 입니다.

Sub Test()
   
    Year (Now) ''년도를 알고 싶을 때
    Month (Now) ''월을 알고 싶을 때
    Day (Now) ''날에 대해 알고 싶을 때
    Hour (Now) ''시간에 대해 알고 싶을 때
    Minute (Now) ''분에 대해 알고 싶을 때
    Second (Now) ''초에 대해 알고 싶을 때
    Weekday (Now) ''요일에 대해 알고 싶을 때
 
End Sub

엑셀 VBA 날짜 관련 함수 처리하는 다양한 방법

 

날짜의 각 요소들을 뽑아 내는 함수 외에 각 파라미터의 값에 따라 위에서 제시한 함수들의 기능이 포함된 DatePart() 는 두 개의 파라미터 값을 조절해서 원하는 값을 추출합니다. 시간, , , 일 등에 함수명이 다 따로 있었다면 DatePart() 는 하나로 파라미터 옵션값에 따라 추출이 가능합니다. 두 가지 파라미터 중 첫 번째는 추출을 원하는 옵션값, 두 번째는 날짜 개체를 넘깁니다. 첫 번째 파라미터로 들어가는 옵션의 종류는 아래와 같습니다.

 

l  yyyy  : 년도

l  q : 분기

l  m :

l  y : 년중 몇번째 날

l  d : 날짜

l  w : 요일

l  ww : 년중 몇번째 주

l  h :

l  n :

l  s :

 

Sub Test()
   
    Debug.Print DatePart("yyyy", Now)
    Debug.Print DatePart("q", Now)
    Debug.Print DatePart("m", Now)
    Debug.Print DatePart("y", Now)
    Debug.Print DatePart("d", Now)
    Debug.Print DatePart("w", Now)
    Debug.Print DatePart("ww", Now)
    Debug.Print DatePart("h", Now)
    Debug.Print DatePart("n", Now)
    Debug.Print DatePart("s", Now)
 
End Sub

엑셀 VBA 날짜 관련 함수 처리하는 다양한 방법

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하는 방법
엑셀 VBA 날짜 데이터를 비교하거나 연산하는 방법
엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법
엑셀 VBA 입력된 값 형식 확인할 수 있는 Information 관련 함수 모음
엑셀 VBA 문서가 열릴 때 필요한 기능 구현하기

 

 



 

함수를 이용해서 날짜 연산하기

 

날짜를 연산하는 함수는 두 가지가 있습니다. 더하기와 빼기입니다. 더하기 함수는 DateAdd(), 빼기는 DateDiff() 가 입니다. 두 함수에 공통적으로 들어가는 첫 번째 파라미터 Interval DatePart() 에서 사용한 옵션에 해당합니다. 예를 들어 시간을 더하거나 빼고 싶으면 “h” 을 넣는 것이죠.

 

DateAdd ( Interval, Number, Date )

DateDiff ( Interval, Date1, Date2, FirstDayOfWeek, FirstWeekOfYear)

 

날짜 더하기 함수에서 첫 번째 파라미터는 옵션, 두 번째는 옵션에 따르는 시간 간격값, 세 번째는 날짜객체가 된다. 세 번째 날짜에 두 번째 값을 더해서 결과값이 리턴 되는 것입니다. 예를 들어 아래 소스는 옵션이 “yyyy” 이므로 세 번째 현재 시간에 1일을 더한 날짜를 리턴하는 것입니다.

 

OneYearLater = DateAdd("yyyy", 1, Now)

 

Sub Test()
 
   Dim OneYearLater As Date
   OneYearLater = DateAdd("yyyy", 1, Now)
 
   Select Case Weekday(OneYearLater)
       Case vbSunday
          MsgBox "This day of the next year is Sunday"
 
       Case vbMonday
          MsgBox "This day of the next year is Monday"
 
       Case vbTuesday
          MsgBox "This day of the next year is Tuesday"
 
       Case vbWednesday
          MsgBox "This day of the next year is Wednesday"
 
       Case vbThursday
          MsgBox "This day of the next year is Thursday"
 
       Case vbFriday
          MsgBox "This day of the next year is Friday"
 
       Case vbSaturday
          MsgBox "This day of the next year is Saturday"
 
    End Select
    
End Sub

엑셀 VBA 날짜 관련 함수 처리하는 다양한 방법

 

뺄셈은 DateDiff() 함수를 사용합니다. 첫 번째 파라미터에 옵션을 넣고 두 번째, 세 번째 에는 날짜를 넣는데 두 날짜의 차이 값을 리턴하게 됩니다. 그러니까 옵션이 h 이고 10시와 12시를 넣게 되면 2시간이라는 값이 리턴되는 것이죠. 세 번째 파라미터는 한 주를 시작하는 요일이며 네 번째는 일년을 시작하는 주로 계산하게 되는데, 이 두 개의 파라미터는 선택사항이다.

 

Sub Test()
 
    Dim datTim1 As Date
    Dim datTim2 As Date
    Dim wD As Long
    Dim wY As Long
 
    datTim1 = #1/4/2001#
    datTim2 = #1/9/2001#
 
    wD = DateDiff("w", datTim1, datTim2)
    wY = DateDiff("ww", datTim1, datTim2)
 
    Debug.Print "wD : " & wD
    Debug.Print "wY : " & wY
 
End Sub

엑셀 VBA 날짜 관련 함수 처리하는 다양한 방법

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하는 방법
엑셀 VBA 날짜 데이터를 비교하거나 연산하는 방법
엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법
엑셀 VBA 입력된 값 형식 확인할 수 있는 Information 관련 함수 모음
엑셀 VBA 문서가 열릴 때 필요한 기능 구현하기
반응형
Posted by 녹두장군

댓글을 달아 주세요