- 최초 작성일: 2000-12-20
- 최종 수정일: 2026-09-29
- 조회수: 23 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 특수한 시간계산Ⅱ
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
지난번 Excel 강좌 시간에 특수한 시간계산에 대해 설명을 드렸는데 기다렸다는
듯이(^^) 숨겨놓았던(?) 질문을 주신 분이 몇 분 계십니다.
질문 하나
우연히 이곳에 들렀다가 평소에 잘 몰랐던 부분을 많이 알게 되었습니다.
제 일 중에서 작업시간을 계산해야 할 때가 많은데 문자열로 되어 있어서
어떻게 해야할 지 몰라 문의합니다.
시간표시는 1630, 0030 이런 식으로 자료를 넘겨 받습니다.
1630과 같은 문자열을 시간으로 전환하는 방법과 하루가 지난 0030에서
1630을 빼서 역시간을 계산하는 법을 알고 싶습니다.
답변 부탁드립니다. 수고하십시오.
특수한 시간계산Ⅱ
핵심 요약
- 1630 같은 문자열은 LEFT와 RIGHT로 시·분을 나눈 뒤 콜론으로 연결하고 VALUE로 실제 시간값으로 변환할 수 있습니다.
- 시작·종료 시간이 날짜 경계를 넘는 경우에는 IF와 ABS를 조합해 경과시간을 계산할 수 있습니다.
- 계산 결과는 [hh]:mm 같은 사용자 정의 시간 형식을 적용해야 누적 시간값을 올바르게 표시할 수 있습니다.
두 가지 질문이군요. 먼저 1630과 같은 형태의 자료를 16:30처럼 시:분 형태로 바꾸는 방법은… 그동안 수도 없이 공부하신 문자열 함수를 사용하시면 되겠지요?
| 변경전 | 변경후 | |
| 1630 | =VALUE(LEFT(B27,2)&":"&RIGHT(B27,2)) | =VALUE(LEFT(B27,2)&":"&RIGHT(B27,2)) |
더 이상의 설명이 필요없을 것 같습니다만 간략하게 설명을 드리자면, "B27셀에 있는 문자열의 좌우에서 2자씩 가져와서 :로 연결한 다음 그 값을 완전한 숫자 형태로 바꾸어라" 이렇게 해석할 수 있겠습니다. 이렇게 공식을 입력하신 다음 셀 서식을 [hh]:mm으로 설정하시면 됩니다.
그리고 두번째 질문인 "하루가 지난 0030에서 1630을 빼서 역시간을 계산하는 법"은 논리함수인 If()를 Abs() 함수와 조합하여 사용하시면 해결하실 수 있겠습니다.
| 시작시간 | 종료시간 | 경과시간 |
| 0:30:00 | 16:00:00 | =IF(B42<C42,ABS(B42-C42),B42-C42) |
위에서 경과시간 부분에는 아래의 수식이 들어 있습니다.
=IF(B41<C41,ABS(B41-C41),B41-C41)
여기서 Abs() 함수는 자동차의 ABS 브레이크와는 아무 상관이 없습니다. ^^ 이것은 음수를 양수로 바꾸어 주는, 즉 절대값을 돌려주는 함수입니다. 마찬가지로 이렇게 식을 입력하신 다음 셀 서식은 [hh]:mm으로 지정해야 합니다.
질문 두울
시간계산 얘기가 나온 김에 여쭤보겠는데요…
3000:00-3150:00=-135:00 이잖아요!
근데 엑셀에서 이런 답을 얻을 수 있을까요?
(사용한) 셀 서식은 [h]:mm 입니다.
이것은 위의 질문 중에서 두번째 질문에 대한 답변을 참고하시면 되겠습니다. 간단하게 =abs(a1-b1)이라고 입력하신 다음에 셀 서식을 [hh]:mm으로 설정해 주시면 됩니다. 물론 직접적으로 -시간이 표시되지는 않지만 If 조건문을 하나 추가하면 이것도 가능해 지겠지요?
오늘은 여기까지…
2000-12-20
정리 — 특수한 시간계산Ⅱ
| 구분 | 내용 |
|---|---|
| 1630을 시간으로 | =VALUE(LEFT(B27,2)&":"&RIGHT(B27,2)) 입력 후 [hh]:mm 서식 적용 |
| 날짜를 넘긴 경과시간 | =IF(B42<C42,ABS(B42-C42),B42-C42) 입력 후 [hh]:mm 서식 적용 |
| ABS 함수 | 절대값을 돌려주는 함수 |
| 음수 시간 표시 | ABS에 IF 조건문을 하나 더 추가하면 가능 |
자주 묻는 질문 (FAQ)
Q1. 1630 같은 문자열을 시간으로 바꾸려면 어떻게 하나요?
LEFT와 RIGHT로 앞의 두 글자와 뒤의 두 글자를 가져와 콜론으로 연결하고 VALUE로 숫자로 바꾼 뒤 셀 서식을 [hh]:mm으로 지정합니다.
Q2. 하루가 지난 시간의 경과시간은 어떻게 계산하나요?
IF와 ABS 함수를 조합합니다. 두 시간의 차이를 절대값으로 구하고 셀 서식은 [hh]:mm으로 지정합니다.
Q3. 결과가 음수인 시간은 표시할 수 있나요?
ABS로 차이의 절대값을 구하면 직접 마이너스 시간이 표시되지는 않지만 IF 조건문을 하나 추가하면 가능합니다.
마치며
문자열 함수와 논리 함수를 조합하면 문자로 넘겨받은 시간 자료도 시간 계산에 활용할 수 있습니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.