무지개타고

치졸하고 유치찬란한 이차원 목록 정리 본문

Program

치졸하고 유치찬란한 이차원 목록 정리

OnRainbow 2012. 7. 24. 21:13
오튜에 올라온 질문인데..
두 개의 필드로 구성된 목록을 정리하는게 목적이다.
필드가 하나 일때 보다는 조금 복잡하다.



이는 고급필터 또는 피벗테이블 기능으로 간편하게 구할 수 있다.



그러나 질문자는 기능이 아닌 수식으로 처리하길 바라는데...
자료가 어낙에나 많아 수식으로는 한계가 있는 질문이었다.

이쯤에서 몇번 소개한 구글닥스의 Unique 함수를 보자.
이름 그대로 Unique 함수는 목록 정리용으로 아주 딱이다.
너무나 유용한 함수이기에, 엑셀로 복제해 반영해줬으면 정말 좋겠다.



앞서 질문을 엑셀에서 수식으로 처리하려면 삽질 좀 많이 해야 한다.
위에서 봤듯이 구글닥스에서는 Unique 함수 딱 하나로 끝나는데 말이다.



d3 셀 (구분)
=IF(SUM(1*(FREQUENCY(MATCH($A$2:$A$17&$B$2:$B$17,$A$2:$A$17&$B$2:$B$17,0),MATCH($A$2:$A$17&$B$2:$B$17,$A$2:$A$17&$B$2:$B$17,0))>0))>=ROW($A1),OFFSET(A$1,SMALL(IF(FREQUENCY(MATCH($A$2:$A$17&$B$2:$B$17,$A$2:$A$17&$B$2:$B$17,0),MATCH($A$2:$A$17&$B$2:$B$17,$A$2:$A$17&$B$2:$B$17,0))>0,ROW($A$2:$A$17)),ROW($A1))-ROW(A$1),0),"")

e3 셀 (항목)
=IF(D3<>"",OFFSET(B$1,SMALL(IF($A$2:$A$18=D3,IF(FREQUENCY(MATCH($A$2:$A$17&$B$2:$B$17,$A$2:$A$17&$B$2:$B$17,0),MATCH($A$2:$A$17&$B$2:$B$17,$A$2:$A$17&$B$2:$B$17,0))>0,ROW($A$2:$A$17))),COUNTIF($D$3:$D3,$D3))-ROW(B$1),0),"")

참고로,
두 수식 모두 배열수식이므로 입력시 Ctrl+Shift+Enter를 동시에 눌러야 한다.
그리고 파이어폭스 및 구글크롬에서 긴 수식이 다 나타나지 않는다.
인터넷 익스플로러에서만 정상적으로 보여진다.
Comments