엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법

엑셀(Excel)/VBA

엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법

 

환경: Microsoft Excel 2013

 

오늘 작업할 예제는 날짜 정보에서 일치하는 년도와 월이 얼마나 있는지 체크하는 것입니다. 이 예제를 구현하기 위해서는 어떤 함수들이 필요할까요? 년도를 비교하고 싶다면 날짜 데이터에서 년도를 뽑아 내야 합니다. 그럼 VBA 에서 제공하는 년도와 월을 추출하는 함수가 있어야겠죠. 오늘은 예제를 통해서 년, , , , , 초를 분리하는 방법에 대해 알아 봅니다.

 

구현하려는 예제는 다음과 같습니다. 왼쪽 날짜 목록에서 년도와 월에 일치하는 날짜가 몇 개나 있는지 알아내는 것입니다.

엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법

 

먼저 함수를 구성하기 위해서 필요한 변수를 선언합니다. 그리고 날짜 데이터들을 체크하기 위해 영역을 지정합니다. ActiveSheet.Range("B3:B18") 영역을 가져온 뒤 For Each 반복문을 사용해서 값을 하나씩 꺼냅니다.  

 

Dim yearCount As Integer, yearNo As Integer

Dim rng As Range, cell As Range

 

yearCount = 0

Set rng = ActiveSheet.Range("B3:B18")

yearNo = ActiveSheet.Range("D3").Value

 

For Each cell In rng

 

Next cell

 

반복문에는 날짜 데이터에서 년도를 뽑아 비교할 소스가 들어가야 합니다. 날짜에서 년도를 뽑는 함수는 Year() 입니다. 그 외 함수는 다음과 같습니다.

 

l  Day :

l  Month :

l  Hour : 시간

l  Minute :

l  Second :

 

아래는 사용자가 제시한 년도와 Year 함수로 뽑은 년도를 비교해서 몇 개 인지 계산하는 소스입니다.

 

If Year(cell.Value) = yearNo Then

    yearCount = yearCount + 1

End If

 

다음은 지금까지 설명한 내용들을 합친 전체 소스 입니다. 사용자가 제시한 년도가 날짜 데이터에서 몇 개나 되는지 체크해서 메시지 박스로 출력하였습니다.

 

Sub OccureYear()

 

    Dim yearCount As Integer, yearNo As Integer

    Dim rng As Range, cell As Range

 

    yearCount = 0

    Set rng = ActiveSheet.Range("B3:B18")

    yearNo = ActiveSheet.Range("D3").Value

   

    For Each cell In rng

       

        If Year(cell.Value) = yearNo Then

            yearCount = yearCount + 1

        End If

       

    Next cell

   

    MsgBox yearNo & " 년 발생 횟수 : " & yearCount

 

End Sub

 

엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법

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