논리/엑셀 프로그래밍

주소 정렬 (번지수는 숫자로 ; 2-1이 11 보다 앞에 오게)

섬그늘 2008. 11. 14. 12:36

B

C

D

2

필동 11-2 

4

정동 11 

3

필동 1번지

5

정동 1-11번지

4

필동 2번지

6

정동 1-2번지

5

정동 11 

1

필동 11-2 

6

정동 1-2번지

3

필동 1번지

7

정동 1-11번지

2

필동 2번지

 

이와 같이 B2:B7의 주소를 보통 정렬하면 11 이 1-11보다 앞에 오게 되지요. 아래를 참고해 보세요.

 

 

B

C

D

E

F

G

H

I

2

필동 11-2 

4

7

11-2

필동 

11.2

5

정동 1-11번지

3

필동 1번지

4

4

1

필동 

1

4

정동 1-2번지

4

필동 2번지

4

4

2

필동 

2

6

정동 11 

5

정동 11 

4

5

11

정동 

11

3

필동 1번지

6

정동 1-2번지

4

6

1-2

정동 

1.2

2

필동 11-2 

7

정동 1-11번지

4

7

1-11

정동 

1.11

1

필동 2번지

 

C2 =MIN(IF(NOT(ISERROR(VALUE(MID(B2,ROW($1:$30),1)))),ROW($1:$30)))

D2 =MAX(IF(NOT(ISERROR(VALUE(MID(B2,ROW($1:$30),1)))),ROW($1:$30)))

E2 =MID(B2,C2,D2-C2+1)

F2 =LEFT(B2,C2-1)

G2 =SUBSTITUTE(E2,"-",".")

H2 =SUMPRODUCT(N(F$2:F$7<=F2))-SUMPRODUCT((F$2:F$7=F2)*(G$2:G$7>G2))

I2 =INDEX(B$2:B$7,MATCH(ROW(A1),H$2:H$7,0),1)

 

C2, D2는 수식 입력 후 CTRL+SHIFT+ENTER (배열수식) 해야 합니다. C2:I2 잡아 아래로 복사하면 됩니다. 다만 이 방법은 주소에 숫자 부분이 하나 밖에 없을 때에만 유효합니다. 번지 이외 아파트 동호가 함께 있으면 원하는 결과를 얻을 수 없는 바, 그 경우엔 별도의 코딩을 해줘야 할 겁니다.