무지개타고

더하기를 하자 - 28 본문

Program

더하기를 하자 - 28

OnRainbow 2014. 1. 29. 00:10
명절이 다가왔다.
김도 구웠고, 만두도 빚었고, 다음엔 고구마전을 만들어야 한단다.
차례상에 이것저것 올려놓으려니 덩달아 바빠지는데...
삼겹살에 콜라로 어찌 않되나???

아래와 같은 판매목록이 있다고 할 때,
고객ID A001, A003은 수량이 부족했는지 추가로 구매해 갔다고 하고
집계를 해보자.



보통은 품목별로 집계하는데 빅데이터 시대(?)에 걸맞게
ID별로도 집계해 보자.
여기서 유일ID 빈도는 중복된 ID를 하나로 처리해 빈도를 구하겠다는 것.

f3 셀 (ID*품목별 수량)
=SUMPRODUCT(($A$3:$A$22=$E3)*($B$3:$B$22=F$2)*($C$3:$C$22))

f11 셀 (유일ID 빈도)
=COUNTIF(F$3:F$10,">0")

그리고 이를 이용해 교차품목별 유일ID 빈도를 구하자.

f14 셀 (교차품목별 유일ID빈도)
=IF(ROWS($E$14:$E14)>COLUMNS($F$13:F$13),SUMPRODUCT(1*((OFFSET($E$3:$E$10,0,MATCH($E14,$F$2:$K$2,0))*OFFSET($E$3:$E$10,0,MATCH(F$13,$F$2:$K$2,0)))>0)),"")

그런데 뚱딴잖게 이를 왜 구하는 거람?
앞서도 얘기했지만 빅데이터 시대에 걸맞게 라니깐~
양식은 다르지만 상관계수와 유사한 용도랄까.
영~ 모르겠다면 (진실공방이 있긴하나) 기저귀와 맥주 라고 검색해보면 대략 느낌이 올듯.



그렇다해도 교차품목별 유일ID빈도를 구하기 위해 ID*품목별 수량을 집계하는 것은
처리 과정을 한 번 더 거쳐야 하니 그닥 마땅치 않다.
원 샷 원 킬~이 필요하다.
배열수식이므로 입력시 Ctrl, Shift, Enter 키를 함께 눌러야 한다.

n14 셀
=IF(ROWS($M$14:$M14)>COLUMNS($N$13:N$13),SUM(1*(FREQUENCY(IF(MMULT(1*(IF($B$3:$B$22=$M14,$A$3:$A$22,1)=TRANSPOSE(IF($B$3:$B$22=N$13,$A$3:$A$22,2))),ROW($A$3:$A$22)^0)>0,MATCH($A$3:$A$22,$A$3:$A$22,0)),MATCH($A$3:$A$22,$A$3:$A$22))>0)),"")



수식만 길 뿐이지 그동안 더하기 시리즈를 봐왔다면 복잡할 거 없다~


Comments