엑셀 시간 빼기를 하고 싶은데
생각대로 안 되는 경우가 있죠
엑셀의 시간 계산에서
가장 중요한 것은 "서식" 입니다
빼기 같은 계산을 하려면
시간의 값이 숫자여야 해요

1 + 2 = 3 이지만
하나 + 둘은 계산을 할 수 없습니다
숫자가 아닌 글자이기 때문이죠
할 수 있는데? 삼(3) 이잖아!
라고 할 수 있지만
그건 우리가 무의식 중에
글자를 숫자로 바꾸고
하나 ▶ 1
둘 ▶ 2
1+2 = 3
바뀐 숫자로 계산을 하고
결과값 3을
3 ▶삼
다시 글자로 바꾼 것이지
"하나" 와 "둘" 같은
글자를 더하는 것이 아닙니다
엑셀도 마찬가지 입니다
글자로는 계산을 할 수 없습니다
숫자로 계산을 해야합니다
숫자인데 우리가 보기 편한
년-월-일 시:분:초 로 보이도록
서식을 적용해야 해요
뭔가 말이 어럽죠?
그런데 막상 해보면 간단합니다
지금부터 나오는 설명에 사용되는
예시들의 엑셀 파일 입니다
아래의 설명만 보셔도 되고
실제 수식을 보고 싶거나
값을 변경하고 싶으신 분들은
예제 파일을 다운로드 받아서
살펴보셔도 됩니다
<날짜가 없는 시간 빼기>
우선 가장 기본적인
날짜 없이 시간만 있는 경우의
시간 빼기부터 시작해보죠
이 부분은 어려운게 없습니다
그냥 일반 숫자 처럼 빼면 돼요
예를 들어서 7시 57분에 출근해서
18시에 퇴근한 사람의 근무 시간을 알고 싶다면
시간2 - 시간1 을 해주면
간단하게 해결이 됩니다
앗 그런데
식사 시간이 90분이 있어서
실제 근무 시간은
10시간 3분에서
90분을 빼야 한다고 해봅시다
90분을 뺐더니
갑자기 ###### 으로 표기가 됩니다
계산이 안 되는거죠
왜 이럴까요?
서식이 다르기 때문입니다
엑셀에서 숫자 1은
1900년 1월 1일 자정입니다
실제로 숫자 1을 입력하고
표시 형식을 년-월-일 시간:분로 변경하면
1900-01-01 00:00
1900년 1월 1일 자정입니다
숫자 2는
1900-01-02 00:00
1900년 1월 2일 자정이죠
숫자가 하나 증가 할 때마다
날짜가 하루씩 증가합니다
숫자 1 = 하루 라는 의미죠
<시간, 분, 초는?>
시간, 분, 초는
1 이하의 숫자를 사용합니다
1을 24로 나누면
0.041666667 이라는 값이 나오는데
엑셀은 이것을 "시간" 으로 인식합니다
0.041667을 60으로 나누면
0.00069444 라는 값이 되는데
이것을 "분" 으로 인식하고
0.00069444를 60으로 나누면
1.15741E-05가 되는데
이것을 "초"로 인식하죠
즉 90분을 빼고 싶다면 -90 이 아니라
1분 (0.0069444) x 90 = 0.0625 (90분)
0.0625를 빼야 합니다
실제로 빼보면
정상적으로 계산되죠
그런데 이걸 매번 할 순 없겠죠?
그래서 양식에 맞춰서 사용하면
엑셀이 알아서 인식합니다
90분은 1시간 30분이죠?
1:30 이라고 쓰면 됩니다
다른 셀에
서식에 맞춰서 값을 입력하고
그 값을 빼도록 하면 정상적으로 나오죠
다른 셀을 만들고 싶지 않다면
시간 함수(time)을 사용하면 됩니다
time(시간,분,초)
위의 양식으로 사용하는데
90분은 1시간 30분이기 때문에
시간 자리 ▶ 1
분 자리 ▶ 30
초 자리 ▶ 0
time(1,30,0) 을 입력하면
1시간 30분이라는 의미가 됩니다
수식 안에서도 계산이 가능하죠
엑셀에서의 1은 하루 (24시간) 이다
시, 분, 초는 소수점으로 표시되는데
일일이 계산 할 수 없기 때문에
양식에 맞춰서 써야 한다
여기까지만 이해해도
엑셀 시간 빼기에서 생기는 문제는
대부분 해결이 됩니다
<날짜가 있는 시간>
만약 24시간보다
더 긴 시간을 빼야 한다면
이때는 날짜가 필요합니다
24시간이 하루이기 때문에
그 이상의 숫자를 적용하면
날짜가 변하기 때문이죠
앞에 나온 예시의 시간1에
24년 11월 20일 이라는
날짜를 추가해봅시다
이 상태에서
70시간 이전의 시간을 구하고 싶다
그러니까 70시간을 빼고 싶다면
어떻게 해야할까요?
앞에서 배운 내용을 생각하면
-time(72,0,0)을 하면 될 것 같지만
아닙니다
계산이 되기는 하는데
계산 된 값을 보면 이상하죠
70시간 이면
2일 하고도 22시간이기 때문에
11월 17일 12:00가 되어야 하는데
11월 19일 12:00 가 나왔죠
2일이 적용되지 않고
22시간만 빼기가 되었어요
이렇게 되는 이유는
time의 한계 때문입니다
time는 24시간 이내의
시, 분, 초를 쉽게 넣는 함수라서
24시간 이상에는 적용이 안 되는거죠
그럼 어떻게 해야할까?
-70/24 를 하면 됩니다
숫자 1이 하루 이고
그걸 24로 나누면 시간이었죠
70시간을 24로 나누면
2.91667 이라는 수치가 되는데
앞의 2는 2일(48시간)이고
0.91667이 22시간 입니다
뭔가 복잡하죠?
간단하게 정리하면
24시간 이하의 시간 계산은
time 함수를 사용해서 계산한다
time(시간,분,초)
24시간 이상의 시간 계산은
시간 / 24로 계산한다
이렇게 기억하시면 됩니다
<오류? 서식이 문제다>
위의 값을 보면
제대로 계산이 안 되고 있죠
이유는 간단합니다
시작시간과 종료시간의 값에
서식이 적용되지 않아서
숫자를 날짜와 시간으로
변환해서 표시하고 있는게 아니라
저런 내용의 글자로
인식이 되고 있습니다
그래서 계산이 안 되는거죠
해결 방법으 간단합니다
서식에 맞춰서 한번 더 적어주세요
숫자로 인식 된
시작 시간이 뒤로 가는게 보이죠?
종료 시간은
아직 글자라서 앞에 붙어 있습니다
종료 시간도 바꿔줍시다
종료 시간의 값도
숫자로 인식이 되면서
뒤로 붙었고
숫자로 인식이 되자
소요시간의 값이 계산됩니다
앗 그런데 소요 시간의 값이
숫자로만 표시가 되네요
yyyy-mm-dd hh:mm:ss AM/PM 형식으로
서식을 변경하도록 합시다
yyyy ▶ 년도
mm ▶ 월
dd ▶ 날짜
hh ▶ 시간
mm ▶ 분
ss ▶ 초
AM/PM ▶ 오전 오후 표시
참고로 서식은 원하는 방식으로
얼마든지 변경이 가능합니다
이렇게 년, 월, 일, 시, 분, 초를 넣어서
표시하는 것도 가능하죠
사용하고자 하는 양식에 맞춰서
자유롭게 변형하시면 됩니다
그런데 뭔가 이상하죠?
계산 결과값이 1900년 1월 1일 2시 23분 입니다
이렇게 38시간 23분이 나와야 하는데
왜 이상하게 나왔을까요?
날짜와 시간의 차이 입니다
1을 날짜로 표시하면
1900년 1월 1일 0시 0분 0초 라고 했었죠?
38시간 23분은
숫자로 치면 1.599305556 입니다
이걸 날짜로 표시하면
1900년 1월 1일 2시 23분이 되죠
그럼 어떻게 해야할까요?
네 맞습니다. 서식을 변경하시면 됩니다
날짜를 의미하는 yyyy, mm, dd를 모두 지우고
시간을 의미하는 h와 m만 남깁니다
여기서 24시간 이상을 표시하려면
시간을 의미하는 h에 [ ]를 하면 됩니다
결국 엑셀의 시간 계산은
서식을 어떻게 쓰는지가 제일 중요합니다
도움이 되셨기를 바랍니다