반응형
오늘 작업할 예제는 날짜 정보에서 일치하는 년도와 월이 얼마나 있는지 체크하는 것입니다. 이 예제를 구현하기 위해서는 어떤 함수들이 필요할까요? 년도를 비교하고 싶다면 날짜 데이터에서 년도를 뽑아 내야 합니다. 그럼 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 : 초
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 날짜 관련 함수, 개체 사용하는 방법 ▶ 엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하기 ▶ 엑셀 VBA 날짜 데이터를 비교하거나 연산하기 ▶ 엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음 ▶ 엑셀 VBA 개발할 때 로그 출력하는 방법 |
▼ 아래는 사용자가 제시한 년도와 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 날짜 관련 함수, 개체 사용하는 방법 ▶ 엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하기 ▶ 엑셀 VBA 날짜 데이터를 비교하거나 연산하기 ▶ 엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음 ▶ 엑셀 VBA 개발할 때 로그 출력하는 방법 |
반응형
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA IF 지시 구문 사용하는 방법, IF … ELSEIF … ELSE … ENDIF (4) | 2023.09.20 |
---|---|
엑셀 VBA 파일 다이얼로그 사용하기 (0) | 2023.09.17 |
엑셀 VBA 셀 영역 선택하는 여러가지 방법 (1) | 2023.09.06 |
엑셀 VBA Range 객체 중 Areas 속성 사용하기 (0) | 2023.08.25 |
엑셀 VBA 이미지 셀 크기에 자동으로 삽입하는 매크로 만들기 (6) | 2023.08.08 |
엑셀 VBA 시트 테두리 선 그리는 방법 (0) | 2023.08.07 |
엑셀 VBA 정규표현식 사용하는 방법, 공백 문자 제거하기 (0) | 2023.07.20 |
엑셀 VBA 반복문 Do While 사용하기 (3) | 2023.07.19 |