무지개타고

캘크를 이용한 시간 계산 본문

Program

캘크를 이용한 시간 계산

OnRainbow 2009. 6. 3. 23:21
얼마 전 오피스튜터에 올라온 질문인데, 오픈오피스(OpenOffice)의 캘크(Calc)를 이용해
겹치는 시간을 단일로 처리한 총소요시간을 구해볼까 한다.



d2 셀 (소요시간)
=N(B2>C2)+C2-B2

그러고보니 이와 유사한 시간 계산을 예전에 한번 검토한 적이 있다.
그때 작성한 수식을 재활용해도 될거 같다.
단지 집계 양식이 별도로 있지 않고,
그땐 엑셀로 수식을 작성했으나 여기선 캘크로 처리한다는게 차이점 이랄까.



g3 셀 (IF)
=TIME(0;SUM(IF(MMULT(IF(TRANSPOSE($A$2:$A$15=F3)*(IF(TRANSPOSE($B$2:$B$15)<TIME(0;ROW($A$1:$A$1440);0);1;0)+(IF(TIME(0;ROW($A$1:$A$1440)-1;0)<TRANSPOSE($C$2:$C$15);1;0)*IF(TRANSPOSE($B$2:$B$15)>TRANSPOSE($C$2:$C$15);1;0)))*(IF((TRANSPOSE($C$2:$C$15)+IF(TRANSPOSE($B$2:$B$15)>TRANSPOSE($C$2:$C$15);1;0))>TIME(0;ROW($A$1:$A$1440)-1;0);1;0));1;0);POWER($A$2:$A$15;0))>0;1;0));0)

h3 셀 (N)
=TIME(0;SUM(N(MMULT(N(TRANSPOSE($A$2:$A$15=F3)*(N(TRANSPOSE($B$2:$B$15)<TIME(0;ROW($A$1:$A$1440);0))+(N(TIME(0;ROW($A$1:$A$1440)-1;0)<TRANSPOSE($C$2:$C$15))*N(TRANSPOSE($B$2:$B$15)>TRANSPOSE($C$2:$C$15))))*(N((TRANSPOSE($C$2:$C$15)+N(TRANSPOSE($B$2:$B$15)>TRANSPOSE($C$2:$C$15)))>TIME(0;ROW($A$1:$A$1440)-1;0))));POWER($A$2:$A$15;0))>0));0)

두 수식 모두 배열수식이다.
그리고 캘크에서는 Ctrl+Shift+Enter 외에,
함수 마법사 대화상자에서 '배열'을 선택한 후 '확인'을 눌러도
배열수식으로 입력된다.



그나저나 위에 그림에서 IF 와 N 결과가 서로 다르다.
그런데 이 두 수식은 동일한 결과를 얻기 위해 IF 함수와 N 함수를 각각 적용했다는
차이점 외에는 동일한 수식이다.
그런데 결과가 서로 다르다.

내가 아직 캘크의 계산 규칙(?)을 제대로 이해하지 못한 결과이겠지만
N 함수 도움말도 이미 확인했는데 예상과 다른 결과가 나오니 혼란스럽군... -_-;;
아마도 캘크에서의 함수는 생각 보다 엄격하게(?) 적용되는 것 같다.

그런데 엑셀에선 과연 어떨까?
오픈오피스는 엑셀 파일로의 변환을 지원하므로 이미 작성된 ODS 파일을 XLS 파일로
변환해 엑셀에서 파일을 열어보면...



IF 와 N 결과는 서로 같으나, 문제는...
캘크와는 다른 결과가 나왔다는 것.
왜지?
수식에 문제가 있나... -_-a

뭔가가 얽히고설킨 기분이군.


Comments