무지개타고

더하기를 하자 - 29 따라지 본문

Program

더하기를 하자 - 29 따라지

OnRainbow 2014. 3. 21. 11:29
'따라지'라는 말을 오랫만에 쓰는데,
어릴적 동네에 다니는 버스 번호중에 235가 있었고, 235-1 이 있었다.
이 두 버스의 번호는 비슷해 보이지만 방향은 거의 반대 방향인 노선이었고,
235-1을 우린 235-따라지 라고 부르곤 했다.
서울에 홍수 날 정도로 비가 쏟아지던 어느날 235를 탔는데
엥? 여기가 어디여?
우산들고 우왕좌왕하는 사이에 앞자리 숫자만 보고 235인줄 알았건만 실상은 따라지...

지난 번에 선입선출을 알아봤다.
여기에 품목이라는 변수를 집어넣어 금액을 구하는 따라지를 검토해보자.



정수용(?) 배열수식인 금액1.

g3 셀 (금액1)
=IF(OR($F3=0,SUMIF($B$3:$B3,$B3,$C$3:$C3)<SUMIF($B$3:$B3,$B3,$F$3:$F3)),0,SUM((MMULT(1*(ROW($C$3:$C3)>TRANSPOSE(ROW($C$3:$C3))),($B$3:$B3=$B3)*($C$3:$C3))<TRANSPOSE(SUMIF($B$2:$B2,$B3,$F$2:$F2)+ROW(INDIRECT("1:"&$F3))))*(TRANSPOSE(SUMIF($B$2:$B2,$B3,$F$2:$F2)+ROW(INDIRECT("1:"&$F3)))<=MMULT(1*(ROW($C$3:$C3)>=TRANSPOSE(ROW($C$3:$C3))),($B$3:$B3=$B3)*($C$3:$C3)))*($B$3:$B3=$B3)*($E$3:$E3)))

실수까지 적용되는 금액2.
물론 배열수식.

h3 셀 (금액2)
=IF(OR($F3=0,SUMIF($B$3:$B3,$B3,$C$3:$C3)<SUMIF($B$3:$B3,$B3,$F$3:$F3)),0,SUM((IF(SUMIF($B$3:$B3,$B3,$F$3:$F3)>MMULT(1*(ROW($B$3:$B3)>=TRANSPOSE(ROW($B$3:$C3))),($B$3:$B3=$B3)*($C$3:$C3)),MMULT(1*(ROW($B$3:$B3)>=TRANSPOSE(ROW($B$3:$B3))),($B$3:$B3=$B3)*($C$3:$C3)),SUMIF($B$3:$B3,$B3,$F$3:$F3))-IF(SUMIF($B$3:$B3,$B3,$F$3:$F3)>MMULT(1*(ROW($B$3:$B3)>TRANSPOSE(ROW($B$3:$B3))),($B$3:$B3=$B3)*($C$3:$C3)),MMULT(1*(ROW($B$3:$B3)>TRANSPOSE(ROW($B$3:$B3))),($B$3:$B3=$B3)*($C$3:$C3)),SUMIF($B$3:$B3,$B3,$F$3:$F3)))*($B$3:$B3=$B3)*($E$3:$E3))-SUMIF($B$2:$B2,$B3,$H$2:$H2))

따라지기는 해도 이전 글과 차이날게 별로 없네?
음...
금액2 수식을 조금이라도 단간한 방향으로 바꿔보면...



l3 셀 (Upper)
=SUMIF($B$3:$B3,$B3,$C$3:$C3)

m3 셀 (Lower)
=SUMIF($B$2:$B2,$B3,$C$2:$C2)

k3 셀 (금액2')
=IF(OR($F3=0,SUMIF($B$3:$B3,$B3,$C$3:$C3)<SUMIF($B$3:$B3,$B3,$F$3:$F3)),0,SUM((IF(SUMIF($B$3:$B3,$B3,$F$3:$F3)>$L$3:$L3,$L$3:$L3,SUMIF($B$3:$B3,$B3,$F$3:$F3))-IF(SUMIF($B$3:$B3,$B3,$F$3:$F3)>$M$3:$M3,$M$3:$M3,SUMIF($B$3:$B3,$B3,$F$3:$F3)))*($B$3:$B3=$B3)*($E$3:$E3))-SUMIF($B$2:$B2,$B3,$K$2:$K2))

배열수식을 안 쓰고 금액2' 수식을 만들려고 했으나
다른 방법이 떠오르지 않고 결국은 배열수식으로 구성.
배열수식이나 별도 셀을 활용하니 수식이 그나마(?) 단촐하긴 하다.

Comments