논리/엑셀 프로그래밍

시간 형식을 연산, 분으로 표시 (24:20)

섬그늘 2008. 11. 14. 13:10

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=YDw5QJIr/GRD4EqdzQrulsIlf9dxo2Za

 

 

A

B

C

D

E

F

G

H

I

1

18:00

22:00

240

 

0.75

0.917

0.917

0.167

240

2

22:15

24:20:00

125

 

0.927

1.014

1.014

0.087

125

3

24:30:00

2:10

100

 

1.021

0.09

1.09

0.069

100

4

2:20

3:20

60

 

0.097

0.139

0.139

0.042

60

5

3:50

5:50

120

 

0.16

0.243

0.243

0.083

120

 

C1 =(IF(VALUE(B1)>=E1,0,1)+VALUE(B1)-VALUE(A1))*60*24

C1의 수식 구조 :

E1 =VALUE(A1)                   ; 시작시간의 엑셀 값
F1 =VALUE(B1)                   ; 끝 시간의 엑셀 값
G1 =IF(F1>=E1,0,1)+F1        ; 끝이 시작 보다 빠른 시간이면 1을 더함
H1 =G1-E1                         ; 고쳐진 시작-끝 차이 (엑셀 값)
I1 =H1*60*24                      ; 엑셀 값을 분으로 바꿈

 

E1:H1을 I1에 밀어 넣어 정리하면 C1이 됩니다. 즉, C1은 A1, B1의 함수이고 E:H열은 설명을 위해 보인 것이고 실전에서는 필요 없습니다. C1 잡아 아래로 드래그 복사하시면 됩니다. (예시의 24:30:00은 24:30만 입력하면 자동으로 그리 표시됩니다. 셀 서식-시각에서 hh:mm을 선택하면 0:30으로 표시될 겁니다.)

 

예시에서 보시다시피, "18:00" 이라고 입력하면 엑셀은 시간으로 인식합니다. 정확하게는 1900년 18:00 로 인식하지요. 엑셀에 내장되어 있는 시계함수는 1900년 1월1일을 정확히 1로 간주합니다. 그리고 날짜가 증가하면 1씩 더하게 되지요. 그래서 엑셀에서 =VALUE(TODAY())라고 입력하면 39535 식의 수치가 뜹니다. 1900년 1월1일 부터 4만 일 정도 흘렀다는 뜻입니다.

 

따라서 엑셀이 다루는 모든 날짜, 시간은 VALUE 함수를 씌워 숫자로 다룰 수 있습니다. 1이 24시간에 해당하므로 거기에 24*60을 곱해주면 분으로 환산된 수치가 찍히겠지요 (I1 수식). 시작 시간, 끝 시간을 현실에서 쓰는 대로 입력했을 때 야근인 경우 시작시간이 더 클 테니 그걸 검사하여 필요할 경우 24시간을 더해주면 됩니다 (G1 수식).