[엑셀/VBA] 날짜 포맷을 간단하게 변경하는 방법
엑셀로 업무를 하면서 생각보다 많이 겪는 상황이라 기록으로 남겨봅니다.
문제
예를 들어 고객사와 엑셀을 이용해서 데이터를 주고 받는데, 고객사의 날짜 포맷은 yyyymmdd 이고, 우리 회사는 yyyy-mm-dd 라고 해봅시다.
굳이 날짜 형식까지 고려하지 않고 그냥 String 형식으로 처리 해야 한다고 가정할 때 주로 제가 썼던 방법은 아래와 같습니다.
Dim Date_Raw As String
Dim Date_Formatted As String
Date_Raw = "20260618"
Date_Formatted = Left(Date_Raw, 4) & "-" & Mid(Date_Raw, 5, 2) & "-" & Right(Date_Raw, 2)
그냥 무식하게 원래 날짜인 20260618을 왼쪽에서 4번째 글자까지 자르고, 하이픈을 붙이고, 중간 5번째 글자 부터 두 글자를 잘라서 붙이고, 또 하이픈을 붙이고, 마지막으로 오른쪽에서 부터 2번째 글자까지 잘라서 붙여서 형식을 변환하는 것이었죠.
이 방법을 사용하는 분들은 아마 저처럼 Mid 함수에서 잠깐 멈칫하는 경험을 했으리라 생각이 드네요.
해결
그런데 조금 찾아 보니 위 방법이 너무나 불편한 방법이더라구요? 결론 부터 이야기 하자면 Format 함수를 이용하면 아주 쉽게 날짜 형식을 바꿀 수 있습니다.
Dim Date_Raw As String
Dim Date_Formatted As String
Date_Raw = "20260618"
Date_Formatted = Format(Date_Raw, "@@@@-@@-@@")
이렇게만 하면 yyyymmdd 형태로된 20260618을 아주 쉽게 yyyy-mm-dd 형식으로 바꿀 수 있는 것이죠.
눈치 채셨겠지만, Format 함수의 위 사용법은 날짜에만 국한되지 않습니다.
아래 예시를 보시죠.
$StrCity = Format("서울특별시", "@@-@@@")
이렇게 하면 그 결과는 서울-특별시가 됩니다.
표준화 된, 향후 그 형식이 매번 똑같을 것으로 예상되는 문자열의 구조를 바꾸고 싶다면, Format 함수 사용을 적극적으로 추천해 드립니다.
끝.