사전 순서 정렬은 엑셀이 제공하는 정렬기능을 활용하시는 것이 가장 실용적입니다. (쉽고 정확합니다) 근데 어떤 이유로든 수식으로 해결하고 싶다면 아래와 같이 방법은 있습니다.
|
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열에서는 순위.행 기법으로 배열수식을 만들어 정렬하고 행번호를 가져와 데이타를 표시합니다. (아마도 실전에서 단순 정렬 목적으로 이 수식을 사용할 경우는 없을 것이고, 조금 더 복잡한 응용작업을 할 때 쓰일 수는 있겠습니다)
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
부호가 연속적으로 같은 범위 탐색 (0) | 2008.11.13 |
---|---|
교체주기에 따라 수선년도 자동 변경 (0) | 2008.11.13 |
조건에 맞는 데이타를 찾고 순위 매기는 3가지 방법 (0) | 2008.11.13 |
빵 받지 않은 학생 중 우유 3개 배분 (0) | 2008.11.13 |
구간이 많은 시간 합산 구하기 (0) | 2008.11.13 |