• 최초 작성일: 2008-11-06
  • 최종 수정일: 2008-11-06
  • 조회수: 5,716 회
  • 작성자: 무지개타고
  • 강의 제목: 부품별 최적 운용일 찾기

엑셀러 권현욱

들어가기 전에

'통계'라고 하면 여러분은 어떤 생각이 드시나요? 저는 개인적으로 좋은 기억보다 그렇지 않은 기억이 많습니다만, 최근 들어 통계를 좀 더 공부해야겠다는 생각을 많이 하고 있습니다.

이번 시간에 함께 할 주제는 '무지개타고'님의 재미있는 통계이야기입니다. '무지개타고'님은 '통계로 세상보기'라는 블로그(https://onrainbow.tistory.com/)를 운영하고 있기도 합니다. 특유의 위트와 재미가 있는 통계 강의에 빠져보시기 바랍니다.


  • 이 페이지의 저작권은 콘텐츠 제공자에게 있습니다.
  • 본문 내용은 필자 개인의 견해이며 아이엑셀러 닷컴 공식 의견과 일치하지 않을 수도 있습니다.

일전에 다른 곳에 올라온 질문인데 상당히 유용하다고 생각되어 정리해 본다. 그 때 답변을 검토해 보니 문제가 많았다.(-_-) 이번에도 오류가 있을 지 모르니 주의하시기 바란다.

로딩 중...

위와 같이 제품별 생산일정이 예정되어 있고 각각의 제품 생산에 소비되는 부품 구성 및 부품별 조달 일정이 아래와 같다고 하자.

로딩 중...
로딩 중...

각 부품별로 생산 일정에 차질을 초래하지 않는 최대 운용일을 찾으려 한다. 즉 생산 일정에 따라 필요 부품이 제때 공급되지 못하면 생산이 중단되므로 이를 방지하기 위해 그 시점을 미리 찾아내려는 것이다.

로딩 중...

이런 종류의 문제는 다양한 분야에서 적용 가능할 것 같다. 일정별로 누적조달량(원)과 누적생산량(원)의 차이를 구해 검토하면 된다.

로딩 중...

B29 셀에는 이런 수식이 입력되어 있다(배열수식).

=SUM($E8,SUMIF($B$17:$H$17, "<="&B$40, $B18:$H18)) - SUM(MMULT($B8:$D8, $B$2:B$4))

이런 방식을 이용하여 부품별 안정적 최대 운용일을 구해 보자.

로딩 중...

G8 셀에 입력된 수식은 이러하다. 역시나 배열수식이다.

=INDEX($B$1:$I$1, MIN(IF((MMULT(MMULT($B8:$D8, $B$2:$I$4), (TRANSPOSE($B$1:$I$1) <= ($B$1:$I$1)) * 1)) > ($E8 + MMULT($B18:$H18, (TRANSPOSE($B$17:$H$17) <= ($B$1:$I$1)) * 1)), TRANSPOSE(ROW(INDIRECT("1:" & COLUMNS($B$1:$I$1)))) - 1, COLUMNS($B$1:$I$1))))

파이어폭스에서는 저 위 긴 수식들이 제대로 나타나지 않는다. 구글 크롬에서도 제대로 볼 수 없다. 익스플로러에서나 볼 수 있다. 수식이 길어 불편한데, 누적표를 이용하면 좀 더 간략하게 줄일 수 있다.

로딩 중...

J29 셀에 입력된 수식이다. 이것도 배열수식이다. 많이 짧아졌다.

=INDEX($B$28:$I$28, MIN(IF($B29:$I29 < 0, COLUMN($B$28:$I$28) - COLUMN($B$28), COLUMNS($B$28:$I$28))))

이번에는 부품이 아니라 각 제품별로 접근해 보자.

로딩 중...

J2, J5 셀에 입력된 수식은 아래와 같으며, 둘 다 배열수식이다.

J2: =INDEX($B$1:$I$1, MIN(IF((MMULT($B2:$I2, (TRANSPOSE($B$1:$I$1) <= ($B$1:$I$1)) * 1) * OFFSET($A$8:$A$15, 0, MATCH($A2,$B$7:$D$7, 0))) > ($E$8:$E$15 + MMULT($B$18:$H$25, (TRANSPOSE($B$17:$H$17) <= ($B$1:$I$1)) * 1)), TRANSPOSE(ROW(INDIRECT("1:" & COLUMNS($B$1:$I$1)))) - 1, COLUMNS($B$1:$I$1))))
J5: =INDEX($B$1:$I$1, MIN(IF(MMULT($B$8:$D$15, MMULT($B$2:$I$4, (TRANSPOSE($B$1:$I$1) <= ($B$1:$I$1)) * 1)) > ($E$8:$E$15+MMULT($B$18:$H$25, (TRANSPOSE($B$17:$H$17) <= ($B$1:$I$1))*1)), TRANSPOSE(ROW(INDIRECT("1:" & COLUMNS($B$1:$I$1)))) - 1, COLUMNS($B$1:$I$1))))

여기서 제품별 운용일(J2)은 해당 제품만 생산한다고 가정할 때 안정적으로 생산 가능한 최대 운용일이다. 그리고 전체 운용일(J5)은 전 제품을 일정대로 생산할 때 안정적으로 생산 가능한 최대 운용일이다.