반응형


안녕하세요, 봉자씨입니다.

오늘 올려 드릴 팁은 직장인이라면 공감하는 것 입니다.

 

1일을 8시간으로 작업하기!

 

보통 우린 하루를 24시간으로 보잖아요

하지만 직장에서는 8시간을 하루로 생각하고 계산합니다.

그리고 시간외 수당이라 던지 아니면 휴가를 주던지 하게 됩니다.

 

그럼 8시간을 기준으로 어떻게 바꿀 수가 있을 가요.

아래의 표와 같이 시간을 계산하고 싶습니다.

그럼 어떻게 해야 할까요?



 

엑셀의 사용자 정의 함수를 사용해서 간단하게 할 수가 있습니다.

아래 코드를 간단하게 짜 보았습니다.

 

먼저 아래와 같은 코드를 복사합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Function day8time(time)
 
Dim t1,
 
t2
 
Dim m
 
t1 = Int(time)
 
t2 = time - t1
 
t1 = t1 * 3
 
If t2 - 0.666666666666667 > 0 Then '16시간을 의미
 
t1 = t1 + 2
 
= t2 - 0.666666666666667
 
ElseIf t2 - 0.333333333333333 > 0 Then '8시간을 의미
 
t1 = t1 + 1
 
= t2 - 0.333333333333333
 
Else
 
= t2
 
End If
 
If t1 > 0 Then
 
day8time = t1 & "일 " & Format(m, "hh:mm")
 
Else
 
day8time = Format(m, "hh:mm")
 
End If
 
End Function
cs


 

그리고 이제 alrt+F11을 눌러 줍니다.

또는 아래와 같이 아이콘을 클릭합니다.

개발도구 => 코드보기


 

그럼 아래와 같은 창이 뜨게 됩니다.

 


 

이제 여기서

아래와 같이 통합 문서 이름 위에서 오른쪽 마우스를 클릭합니다.

그리고 삽입 => 모듈

클릭합니다.

 


 

그럼 아래 그림과 같이 모듈이 생기는 것을 확인 할 수 있습니다.

 


 

Module1이 생기는 것을 볼 수 있습니다.

그것을 이제 더블 클릭합니다.

그럼 옆에 빈 공간을 확인 할 수 있습니다.

그 곳에 아까 위에서 적어 놓은 코드를 복사 합니다.

그럼 아래와 같이 Module1에 코드가 복사 된 것을 확인 할 수 있습니다.

 


 

이제 창을 닫고 나갑니다.

그럼 이제 우리가 만든 함수 즉, 8시간을 1일로 측정하는 함수를 어디서든 사용이 가능합니다.

 


 


 

위와 같이 사용이 가능합니다.

그럼 한번 시간의 합을 모두 더해서 총 몇 일이나 될지 한번 볼까요?

즉, A2:A23까지의 합을 구해서 이것을 날짜로 변환해 보겠습니다.

단 우리는 8시간 기준이겠죠.


 

결과 값은?

 


 

36일 3시간 30분으로 계산이 되는 것을 확인 할 수가 있습니다.

 =========================================================================================================

여기서 잠깐…

여러분들이 알아야 할 것이 있습니다.

우리가 알고 있는 시간은 소수점으로 나타납니다.

0.666666666666667 = > 16:00 과 동일합니다.

0.333333333333333 => 8:00 과 동일합니다.

 

그래서 여러분들이 만약에 그냥 시간을 더하다 보면

아래와 같이 말입니다. 그럼 결과가 어떻게 나올까요?


 

단지 3:30분이라는 결과가 나옵니다.

이게 왜…그럴까요?

시간은 일을 표현 못합니다.

그리고 시간은 24시간이 넘어가버리면 다시 0시가 됩니다.


 

그래서 위의 셀 형식을 일반으로 바꿔서 볼가요?

 



 

결과는 12.141583333이 나옵니다.

이 말은 무슨 말 일가요?

 

12일 그리고 3:30분(0.14158333)이라는 말입니다.

 

여러분이 24:00 이라고 쓰고 셀 형식을 일반으로 바꾸면 1이란 숫자가 표기가 되는 것을 확인 할 수가 있습니다.

 

결론적으로 엑셀의 시간은 소수점 아래로만 표현이 가능하고

소수점 위의 숫자는 일수를 표현한다 라는 것을 알 수 있습니다.

 

어렵나요. 하지만..

 

엑셀에서 시간이란 것이 어떻게 표현되는 지 알아야 이것을 응용 할 수가 있답니다.^^

 

언제든 모르시거나 궁금한게 있으시면 댓글 달아 주세요 ^^

글이 조금이나마 도움이 되셨다면 공감 부탁드립니다.

오늘도 좋은 하루 되세요!

감사합니다.

클릭 클릭 공감 클릭~~


반응형
  1. 도공 2020.12.16 10:55

    안녕하세요 좋은 글 감사합니다 위에 코드 복사하려고 하는데 복사가 안되는데 혹시 어떻게 해야 할까요?

    • Favicon of https://bongjacy.tistory.com 봉자씨 bongjacy 2020.12.16 10:57 신고

      Function day8time(time)

      Dim t1,

      t2

      Dim m

      t1 = Int(time)

      t2 = time - t1

      t1 = t1 * 3

      If t2 - 0.666666666666667 > 0 Then '16시간을 의미

      t1 = t1 + 2

      m = t2 - 0.666666666666667

      ElseIf t2 - 0.333333333333333 > 0 Then '8시간을 의미

      t1 = t1 + 1

      m = t2 - 0.333333333333333

      Else

      m = t2

      End If

      If t1 > 0 Then

      day8time = t1 & "일 " & Format(m, "hh:mm")

      Else

      day8time = Format(m, "hh:mm")

      End If

      End Function


      출처: https://bongjacy.tistory.com/90#comment12455525 [봉자씨의 즐퇴놀이]

  2. 질문자 2021.02.08 12:49

    안녕하세요?
    게시글 덕분에 업무에 도움 많이 받고 있습니다.
    사용중에 궁금한 점이 있어서 여쭤 볼려고 하는데요ㅠ
    104시간을 입력하면 13일로 변환되고, 96시간을 입력하면 12일로 변환되는데
    왜 112시간을 임력하면 13일 08:00 으로 변환될까요? 수식상으로는 14일이 되야 하는것 같은데..ㅠ
    제가 잘못사용하고 있는걸까요?

  3. ㅜㅜ 2021.05.12 14:04

    저도 이거 쓰고 싶은데 복사가 안되네요 ㅠㅠ