엑셀 VBA 날짜 데이터를 비교하거나 연산하는 방법

엑셀(Excel)/VBA

엑셀 VBA 날짜 데이터를 비교하거나 연산하는 방법

 

환경: Microsoft Excel 2013

 

VBA 에서 날짜와 시간은 어떻게 비교해야 할까요? 날짜의 내부는 계산에 사용할 수 있도록 일련 번호로 지정되어 있습니다. 이런 일련 번호를 나라와 국가의 날짜/시간 형식에 맞게 다양한 형태로 표현하는 것입니다. 기본적으로 1900 1 1일이 일련 번호 1이고, 2008 1 1일은 1900 1 1일에서 39,448일째 날이므로 일련 번호 39448이 됩니다.

 

날짜를 비교하는 방법은 비교 연산자를 사용해서 날짜 텍스트를 비교하거나 DATEVALUE 함수를 사용해서 일련번호로 변환한 뒤 비교할 수도 있습니다. 아무래도 두 번째 방법인 DATEVALUE 함수를 이용하는 것이 정확하겠죠

 

먼저 현재 날짜를 비교해 보겠습니다. 엑셀 시트에 있는 날짜 형식의 데이터 중 현재 날짜와 동일한 날짜를 찾는 것입니다. 같은 텍스트를 찾듯이 “=” 비교 연산자와 현재 날짜를 나타내는 Date 개체를 이용합니다.

 

Sub ComDate()

 

    Dim rng As Range

    Dim cell As Range

   

    Set rng = ActiveSheet.Range("B2").CurrentRegion

   

    For Each cell In rng

       

        If cell.Value = Date Then

            cell.Interior.Color = vbRed

        End If

       

    Next cell

 

End Sub

 

엑셀 VBA 날짜 데이터를 비교하거나 연산하는 방법

 

다음은 부등호를 사용해서 날짜를 비교해 보겠습니다. 일반 텍스트를 비교하거나 날짜 일련번호를 비교하는 것도 가능합니다. 아래 소스는 영역에서 "2016-06-30" 보다 큰 날짜를 찾아 셀 배경색을 입히게 됩니다. 날짜를 텍스트로 비교해도 크고 작음을 판단할 수 있습니다.

 

If cell.Value > "2016-06-30" Then

    cell.Interior.Color = vbRed

End If

 

또한 DateValue 함수를 사용해서 날짜 일련번호로 비교할 수도 있습니다. 결과는 텍스트를 비교한 것과 같습니다.

 

If cell.Value > DateValue("2016-06-30") Then

    cell.Interior.Color = vbRed

End If

 

엑셀 VBA 날짜 데이터를 비교하거나 연산하는 방법


저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군