B |
C |
D |
E |
F |
G |
H |
I |
J | |
2 |
최대길이 |
3 |
3 |
2 |
1 |
||||
3 |
101 |
101 |
1 |
0 |
1 |
101 |
101 |
1 |
100 |
4 |
102 |
102 |
2 |
0 |
1 |
201 |
201 |
2 |
200 |
5 |
201 |
201 |
1 |
0 |
2 |
102 |
102 |
3 |
300 |
6 |
202 |
202 |
2 |
0 |
2 |
202 |
202 |
101 |
101 |
7 |
301 |
301 |
1 |
0 |
3 |
103 |
103 |
102 |
201 |
8 |
302 |
302 |
2 |
0 |
3 |
203 |
203 |
103 |
301 |
9 |
100 |
100 |
0 |
0 |
1 |
1 |
1 |
201 |
102 |
10 |
200 |
200 |
0 |
0 |
2 |
2 |
2 |
202 |
202 |
11 |
300 |
300 |
0 |
0 |
3 |
3 |
3 |
203 |
302 |
C열 : 숫자를 문자열로 바꿈
D~G : 문자열에서 역순으로 문자를 하나씩 가져와 G열에서 합침
H열 : 문자를 숫자로 바꿈 (SMALL함수로 정렬시키기 위한 전처리)
I열 : SMALL함수를 써서 오름차순 정렬시킴
J열 : 결과 열임. 순위에 해당하는 원래의 숫자를 표시
C2 =LEN(MAX(B3:B11)) ; 데이타 중 최대 자리 수
D2 =$C2+(COLUMN($D2)-COLUMN()) ;열 번호 자동 생성. E2, F2에 복사
C3 =TEXT(B3,"#")
D3 =IF(MID($B3,D$2,1)=0,"0",MID($B3,D$2,1)) ; E3, F3에 복사
G3 =D3&E3&F3
H3 =VALUE(G3)
I3 =SMALL(H$3:H$11,ROW()-ROW(A$2))
J3 =INDEX(B$3:B$11,MATCH(I3,H$3:H$11,0),1) C3:J3 잡아 데이타 행 만큼 복사하면 작업 끝. 사실 이렇게 하지 않고 G열 잡아 오름차순 정렬하면 B열에 결과표를 얻을 수 있을 듯...
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
CHOOSE 응용 (채점 결과) (0) | 2008.11.13 |
---|---|
알파벳 채우기 (ABC) (0) | 2008.11.13 |
시작부터 2년 이내 데이타 추출 (0) | 2008.11.13 |
조건에 맞는 숫자를 순서대로 출력 (0) | 2008.11.13 |
월별 미수금 발생/잔액표 (0) | 2008.11.13 |