논리/엑셀 프로그래밍

창호 주자재 수량 구하기 (일반, 색상별)

섬그늘 2008. 11. 14. 12:56

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=97+vxOl6dIcRX1HsuVR3Y5RYBZgMGAtj

 

 

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

2

가로

세로

색상

수량

 

6%

 

  4,000

  6,000

 

 

 

 

 

 

3

  4,400

  2,300

 빨강 

    2

 

   4,664

   2,438

0.8576

1.2864

  4,700

4

1.641

2.461

  4,900

2

4

  3,000

  2,300

 파랑 

    4

 

   3,180

   2,438

1.2579

1.8868

  4,000

8

1.641

2.461

  4,900

4

5

  1,600

  2,300

 노랑 

    3

 

   1,696

   2,438

2.3585

3.5377

  5,100

2

1.641

2.461

  4,900

3

6

  2,200

  3,100

 빨강 

    5

 

   2,332

   3,286

1.7153

2.5729

  4,700

5

1.217

1.826

  4,000

10

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

빨강

  4,700

4

 

 

 

 

9

 

 

 

 

 

 

 

 

빨강

  4,900

2

 

 

 

 

10

 

 

 

 

 

 

 

 

파랑

  4,000

8

 

 

 

 

11

 

 

 

 

 

 

 

 

파랑

  4,900

4

 

 

 

 

12

 

 

 

 

 

 

 

 

노랑

  5,100

2

 

 

 

 

13

 

 

 

 

 

 

 

 

노랑

  4,900

3

 

 

 

 

14

 

 

 

 

 

 

 

 

빨강

  4,700

5

 

 

 

 

15

 

 

 

 

 

 

 

 

빨강

  4,000

10

 

 

 

 

16

 

 

 

 

 

 

 

 

0

       -

0

 

G3 =B3*(1+$G$2) ; H3에 복사

I3 =I$2/$G3 ; J3에 복사

K3 =IF(INT(I3)<INT(J3),ROUNDUP(INT(J3)*G3,-2),$I$2)

L3 =IF(K3>$I$2,ROUNDUP(G3*$E3*2/K3,0),$E3*2)

M3 =I$2/$H3 ; N3에 복사

O3 =IF(INT(M3)<INT(N3),ROUNDUP(INT(N3)*H3,-2),$I$2)

P3 =IF(O3>$I$2,ROUNDUP(H3*$E3*2/O3,0),$E3*2)

J8 =OFFSET($D$3,INT((ROW(A1)-1)/2),0)

K8 =OFFSET(K$3,INT((ROW(A1)-1)/2),MOD(ROW(A1)-1,2)*4) ; L8에 복사

 

이제 G3:P3 잡아 데이타 행 만큼 아래로, J8:L8 잡아 아래로 모든 데이타가 다 나올 때 까지 (색상열에 0이 뜰 때 까지) 채워넣으면 표가 완성됩니다. 이후 J8:L8 이하를 잡아 피벗테이블로 만들어 보는 편이 좋겠지요. 아쉬운 대로 '문제가 생기지 않는 정도'의 답은 구할 수 있을 겁니다.

 

즉, 이 정도면 질문은 충족될 겁니다. 다만 거듭 말씀드리는 바, 이런 유형의 문제가 어려운 것이 위 방식이 '최적해'가 아니라는 점입니다. 예로써 1,600이 1개, 3,000이 1개 각각 올라왔을 때 4,600을 사서 자르면 되겠지만 이렇듯 짜투리를 최소화하는 최적 조합까지 위 수식이 잡아내 주지는 못합니다. (모든 경우의 조합을 구해야 하므로 엄청난 작업이 됨) 

 

더 나아가 제시된 6% 로스율은 아마도 짜투리(전체 자재구매량-사용량)/구매량이 일반적일 겁니다. 길이가 길다고 더 긴 짜투리가 생기지는 않을 테니까. 작업손실로 발생한다면 일정길이를 넣어주어야 할 겁니다. 거기다가 10cm씩 증가하더라도 단위길이당 가격이 같다면 별 문제 없지만 가격이 달라지는 경우는 가격표가 함께 고려되어야 프로그래밍이 의미 있을 것이고, 그 정도 코딩은 아마추어 수준을 훨씬 벗어납니다.