나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 조삿갓 (choga21)

추천:  2
파일:     조회:  4088
제목:   [강좌]날짜/시간 데이터 취급법
     
  * 아래줄에 질문을 작성하세요 >>

Excel 및 VBA 에서 일한시간을 계산하고 싶습니다. 
일한시간이 Date Type으로 나오서 정수형 시간으로 변환을 하고 싶습니다. 
Excel  및 VBA에서 Date Type의 시간을 정수형 타입의 시간으로 변환하는 방법을 알고 싶습니다.
==============[slgi님 글에 대한 답변입니다]==============

Date Type은 1900-1-1을 1로 정의하고
그로부터 경과한 일수를 저장합니다.
예를들면 오늘(2018-1-31)은
그 날로부터 43,131 째이므로
워크시트에서 Ctrl+; 엔터(오늘 날짜를 빠르게 입력하는 방법)하고
셀 서식을 '일반'으로 바꾸면
2018-1-31 표시가 43131로 바뀝니다.

1일은 24시간이므로, 1시간 = 1/24로 변환하여 기억됩니다.
셀에 43131.25를 입력하고 셀 서식을 날짜/시간 표시형식으로 바꾸어 주면
2018-1-31 오전 6:00으로 표시됩니다.

1/24를 다시 60으로 나누면 1분
또 60으로 나누면 1초가 되겠지요.
즉, 1초 = 1/86400 약 0.0000116 으로 저장됨

Date Type으로 저장된 시간을 시간 단위의 정수로 바꾸려면
그 값에 24를 곱하면 되겠지요.
이 때 1시간 미만을 잘라버리려면 Int 또는 ROUNDDOWN 함수를
반올림하려면 CInt 또는 ROUND 함수를 이용하여 형변환을 해주면 됩니다.

A2 셀에 출근 시각, A2 셀에 퇴근 시각이 Date Type으로 있다고 할 때
=INT((A2-A1)*24)
하면 1시간 미만은 자르고 근무시간을 계산해줍니다.

물론 =HOUR(A2-A1)로도 간단히 구할 수 있겠으나
이 경우에는 근무시간이 24시간 이상인 경우 문제가 생기겠죠.

엑셀 워크시트, VBA 뿐만 아니라 모든 컴퓨터 프로그램 및 언어에서 원리는 같습니다.
 
[불량 게시물 신고]  
조삿갓바꾸어 말하면
1시간 미만은 잘라버림 처리하고
근무시간이 항상 24시간 미만이라는 보장만 있으면

=HOUR(A2-A1)

방법이 더 간단하고 쉬운 방법일 수 있습니다.

근무시간의 총계가 필요할 경우 각각의 근무시간을
이렇게 시간 단위 정수 값으로 바꾸어서 더하면
합산 값은 24시간 이상이라도 문제가 없을테니까요.
02-01 (09:37)
삭제 ■신고
조삿갓만약 30분(0.5시간) 단위로 급료를 계산하는 경우에는
30분 미만을
반올림할 경우: =MROUND(시간값*24,0.5)
버림할 경우: =FLOOR(시간값*24,0.5)
올림할 경우: =CEILING(시간값*24,0.5)
등의 함수를 사용하면 됩니당~~
03-12 (18:50)
삭제 ■신고
표현감사합니다...이해 되었습니다.03-12 (20:07)
삭제 ■신고
        
  

작성일 : 2018-01-31(14:29)
최종수정일 : 2018-02-01(09:33)
 


 ◎ 관련글

  제 목   작성자   날짜
일한 시간계산 slgi 2018-01-31
[강좌]날짜/시간 데이터 취급법 조삿갓 2018-01-31