반응형


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

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

 

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

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

  4. 현정 2021.11.01 16:16

    안녕하세요 선생님, 제가 복무사용 내역을 정리하다보니까, 8시간 = 1일 계산법이 필요해서 오게되었습니다.
    제가 위에 방법대로 했는데ㅠㅠ...#VALUE! 오류가 뜨는데..뭐가 잘못된걸까요?

  5. 아하~ 2022.01.06 13:00

    왜 안될가여? 따라해도 전혀 작동을 못하는데요~

  6. Favicon of https://getc.tistory.com 시크릿옴므 2022.01.11 15:23 신고

    안녕하세요 작성해주신 코드 덕분에 유용하게 사용하고 있습니다 ^^
    1일(하루24시간을) 8시간으로 사용하다가

    1일 5시간으로 사용할일이 있어서 아래와 같이 수정해보았는데요...

    문제는 1:00~23:00까지는 수식이 잘 적용되는데 24:00부터는 적용이 안되더라구요... 혹시 1일 5시간으로 적용하려면 어떻게 해야할지 여쭙고자합니다...

    Function day5time(time)

    Dim t1, t2

    Dim m

    t1 = Int(time)

    t2 = time - t1

    t1 = t1 * 3





    If t2 - 1.04166666666667 >= 0 Then '25시간

    t1 = t1 + 4

    m = t2 - 1.04166666666667




    ElseIf t2 - 0.833333333333333 >= 0 Then '20시간

    t1 = t1 + 4

    m = t2 - 0.833333333333333



    ElseIf t2 - 0.625 >= 0 Then '15시간

    t1 = t1 + 3

    m = t2 - 0.625



    ElseIf t2 - 0.416666666666667 >= 0 Then '10시간

    t1 = t1 + 2

    m = t2 - 0.416666666666667


    ElseIf t2 - 0.208333333333333 >= 0 Then '05시간

    t1 = t1 + 1

    m = t2 - 0.208333333333333




    Else

    m = t2 + 1

    End If


















    If t1 > 0 Then

    day5time = t1 & "일" & Format(m, "hh시간mm분")

    Else

    day5time = Format(m, "hh시간mm분")

    End If

    End Function