논리/엑셀 프로그래밍

수식을 사용한 데이타 사전 순서 정렬

섬그늘 2008. 11. 13. 16:40
사전 순서 정렬은 엑셀이 제공하는 정렬기능을 활용하시는 것이 가장 실용적입니다. (쉽고 정확합니다) 근데 어떤 이유로든 수식으로 해결하고 싶다면 아래와 같이 방법은 있습니다.

 

 

B

C

D

2

이름

순번

정렬

3

박지성

2

김병지

4

홍명보

5

박지성

5

설기현

3

박지성

6

박지성

2

설기현

7

이영표

4

이영표

8

김병지

1

홍명보

 

C3 =SUMPRODUCT(N(B$3:B$8<=B3),1/COUNTIF(B$3:B$8,B$3:B$8))

D3 =INDIRECT(ADDRESS((SMALL(IF(C$3:C$8>0,C$3:C$8+ROW(C$3:C$8)/100000,66000),ROW()-ROW(D$3)+1)-INT(SMALL(IF(C$3:C$8>0,C$3:C$8+ROW(C$3:C$8)/100000,66000),ROW()-ROW(D$3)+1)))*100000,COLUMN(B$3))) ; 수식 입력 후 CTRL+SHIFT+ENTER (배열수식) C3:D3 잡아 아래로 데이타 행수 만큼 채우면 작업 끝.

 

이 수식은 C열에서 중복되지 않는 순위를 매깁니다. (동명이인 박지성이 두명 있더라도 설기현이 3번이 됨) 그걸 참조하여 D열에서는 순위.행 기법으로 배열수식을 만들어 정렬하고 행번호를 가져와 데이타를 표시합니다. (아마도 실전에서 단순 정렬 목적으로 이 수식을 사용할 경우는 없을 것이고, 조금 더 복잡한 응용작업을 할 때 쓰일 수는 있겠습니다)