Excel

DateValue, TimeValue : 텍스트 형식의 날짜, 시간을 정수 또는 소수로 변환

별동산 2023. 4. 13. 08:28
반응형

1. 구문

DATEVALUE(date_text)

TIMEVALUE(time_text)

 

문자열로 되어 있는 날짜 또는 시간을 정수 또는 소수로 변환해서 날짜, 시간 표시형식으로 바꿀 수 있도록 하는 함수입니다. 

 

날짜는 1900/1/1부터 9999/12/31까지 가능하고,

시간은 0:00:00부터 23:59:59까지 가능합니다. 그렇다면 24:00:00가 없으므로 다음 날 0:00:00으로 바꾸는 특별한 처리가 필요합니다.

 

2. 예제

 

가. 텍스트 날짜, 시간을 DateValue, TimeValue 함수 내에 입력

(1) DateValue 함수

직접 DateValue함수 내에 날짜를 큰따옴표 안에 넣어서 입력할 수 있습니다. 그러면 정수 45029가 반환되며, 홈 탭 > 표시 형식 그룹에서 일반을 간단한 날짜로 바꾸면 날짜로 표시됩니다.

 

(2) TimeValue 함수

직접 TimeValue함수내에 시간을 큰따옴표 안에 넣어서 입력할 수 있습니다.

그러면 소수 0.222569444가 반환되는데 홈 탭 > 표시 형식 그룹에서 시간으로 바꾸면 시간으로 표시됩니다.

 

표시 형식을 변경한 결과 화면입니다. 날짜와 시간이 큰따옴표 안에 들어있는 것과 같은데, 오전이 앞에 붙어 있습니다.

 

'오전'을 없애려면 

시간이 아니라, 맨 아래에 있는 '기타 표시 형식'을 누른 다음

 

시간 범주에서 형식을 세번째 13:30:55로 변경하면 됩니다.

 

그럼 오전은 없어지고 5:20:30으로 표시됩니다.

 

 

나. 텍스트 날짜와 시간이 입력된 셀 주소 입력

아래와 같이 A3셀에 "2023/4/13", B3셀에 "5:20:30"이라고 큰따옴표 안에 날짜와 시간을 입력한 다음

=datevalue(a3) 하고, =timevalue(b3)라고 했는데, #VALUE! 에러가 발생합니다.

 

(1) #VALUE! 에러 발생 원인 파악

=DateValue 함수 안의 A3을 마우스로 끌어서 범위로 설정한 후 F9키를 누르면

 

"""2023/4/13"""이라고, 원래 있던 텍스트 날짜를 다시 큰따옴표로 감싸고 있습니다.

 

(2) 해결책

따라서, 셀 주소를 이용해 텍스트 형식을 날짜, 시간 형식으로 바꿀 때는 큰따옴표가 아니라 작은따옴표를 앞에 입력한 다음  날짜, 시간 등의 텍스트를 입력해야 합니다.

 

다. 텍스트 날짜에서 연도를 입력하지 않은 경우

연도를 입력하지 않으면 올해로 인식합니다.

 

라. 날짜와 시간을 함께 표시한 경우

날짜와 시간을 함께 해서 '2023/4/13 5:20:30이라고 입력하고,

=datevalue(a6)이라고 입력하면 날짜에 해당하는 정수만 반환되고,

=timevalue(a6)이라고 하면 시간에 해당하는 소수만 반환됩니다.

 

따라서, 날짜와 시간을 한꺼번에 표시하려면 모두 숫자이므로

+ 연산자를 이용해

=datevavlue(a6)+timevalue(a6) 이라고 해야 합니다.

 

그러면 숫자가 더해져서 45029.2226으로 표시됩니다.

 

이제 표시형식을 날짜 + 표시형식으로 바꾸면 됩니다.

 

이번에는 표시 형식 대화상자를 여는 단축키인 Ctrl + 1을 누른 다음

 

사용자 지정 범주를 선택한 다음, 오른쪽에서 형식을 찾는데, yyyy-mm-dd h:mm까지만 있고 초가 표시되는 것은 없습니다.

 

이 때는 yyyy-mm-dd h:mm을 클릭한 다음

 

형식 아래 입력 칸에서 맨 뒤에 :ss를 추가하면 됩니다. 그러면 그 위 보기에 2023-04-13 5:20:30이라고 표시됩니다.

확인 버튼을 누르면

 

2023-04-13 5:20:30이라고 원하는대로 표시됩니다.

 

마. 연,월,일이 다른 셀에 입력된 경우

연도는 A8셀, 월은 B8셀, 일은 C8셀에 입력된 경우는 & 결합 연산자를 이용해서

 

=datevalue(a8&"-"&b8&"-"&c8) 이라고 입력할 수도 있고,

date함수를 이용해

=date(a8,b8,c8)이라고 해도 됩니다.

 

차이점은 DateValue함수의 경우는 정수가 반환되는데, Date함수의 경우는 날짜 표시형식으로 반환된다는 것입니다.

 

바. 매크로를 이용하여 일률적으로 변경하기

아래와 같이 텍스트로 된 날짜가 많다면 G열에서 DateValue함수를 사용해서 날짜로 바꾼 다음, F열에 값으로 붙여 넣기를 할 필요 없이 

 

아래 글을 참고하여 개인용 매크로 통합문서에 날짜변환 매크로를 작성한 후 실행하는 것이 더 좋은 방법입니다.

https://lsw3210.tistory.com/entry/%EB%82%A0%EC%A7%9C-%EB%B3%80%ED%99%98-DateValue-%ED%95%A8%EC%88%98-%EC%84%A0%ED%83%9D%ED%95%98%EC%97%AC-%EB%B6%99%EC%97%AC%EB%84%A3%EA%B8%B0-VBA

 

아래는 매크로가 포함되지 않은 파일이고,

date7(final).xlsx
0.01MB

 

아래는 날짜변환 매크로가 포함된 파일입니다. 

date7(final).xlsm
0.01MB

 

그러나, 위에도 썼지만 개인용 매크로 통합문서(personal.xlsb)에 저장하면 언제든 불러와서 사용할 수 있기 때문에 더 효율적입니다.

반응형