무지개타고

치졸하고 유치차란한, 바로 순위 구하기 본문

Program

치졸하고 유치차란한, 바로 순위 구하기

OnRainbow 2009. 8. 27. 13:41
오튜에 올라온 질문인데...
언제나 처럼 내 맘대로 정리해 봤다.



이때 조건은 대충 이렇다.
'값' 필드에서 '10 초과'하는 목록만 빈도를 구하려 한다는 것.



이와 유사한 처리를 언제 한번 훑어봤는데...
그런데 추가된 조건이 생각만큼 만만하지 않고, 그 전 수식에 계륵도 많고 해서
수식을 다시 구하면...



집계① 은 조건이 고려되지 않은 상태에서 유일 목록을 구성한 것이다.
그리고 집계② 는 조건이 반영된 유일 목록을 '빈도'순으로 나열한 것이다.

g3 셀 (집계① 구분)
=INDEX($A$2:$A$20,MATCH(0,COUNTIF(G$2:G2,$A$2:$A$20),0))

j3 셀 (집계② 구분)
=IF(SUM(N((FREQUENCY(MATCH($A$2:$A$20,$A$2:$A$20,0),MATCH($A$2:$A$20,$A$2:$A$20,0))>0)*MMULT(N($A$2:$A$21=TRANSPOSE($A$2:$A$21)),N($B$2:$B$21>$E$2))>0))>=ROW(A1),INDEX($A$2:$A$20,MATCH(LARGE((FREQUENCY(MATCH($A$2:$A$20,$A$2:$A$20,0),MATCH($A$2:$A$20,$A$2:$A$20,0))>0)*MMULT(N($A$2:$A$21=TRANSPOSE($A$2:$A$21)),N($B$2:$B$21>$E$2))+ROW($A$2:$A$21)/POWER(10,CEILING(LOG(ROWS($A$2:$A$21)),1)),ROW(A1)),(FREQUENCY(MATCH($A$2:$A$20,$A$2:$A$20,0),MATCH($A$2:$A$20,$A$2:$A$20,0))>0)*MMULT(N($A$2:$A$21=TRANSPOSE($A$2:$A$21)),N($B$2:$B$21>$E$2))+ROW($A$2:$A$21)/POWER(10,CEILING(LOG(ROWS($A$2:$A$21)),1)),0)),"")

두 수식 모두 배열수식이다.

h3 셀 (집계① 빈도)
=SUMPRODUCT(($A$2:$A$20=G3)*($B$2:$B$20>$E$2))

k3 셀 (집계② 빈도)
=IF(J3="","",SUMPRODUCT(($A$2:$A$20=J3)*($B$2:$B$20>$E$2)))

Comments