논리/엑셀 프로그래밍

일의 자리 우선으로 정렬

섬그늘 2008. 11. 13. 15:33

 

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열에 결과표를 얻을 수 있을 듯...