별로 실전적이진 않지만...함수로 한번에 되긴 됩니다. 프로그램에 관심 있다시면 참고해 보세요.
B |
C |
D |
E |
F | |
2 |
가좌동 846-87 |
|
가좌동 89-11 |
|
3 |
3 |
가좌동 846-88 |
|
가좌동 89-13 |
|
8 |
4 |
가좌동 846-89 |
|
가좌동 89-16 |
|
846 |
5 |
가좌동 846-90 |
|
가좌동 91-6 |
|
846 |
6 |
가좌동 856-3 |
|
가좌동 846-87 |
|
87 |
7 |
가좌동 860-2 |
|
가좌동 846-88 |
|
846.9 |
8 |
가좌동 89-11 |
|
가좌동 846-89 |
|
|
9 |
가좌동 89-13 |
|
가좌동 846-90 |
|
|
10 |
가좌동 89-16 |
|
가좌동 856-3 |
|
|
11 |
가좌동 91-6 |
|
가좌동 860-2 |
|
|
12 |
가좌동 947-1 |
|
가좌동 947-1 |
|
|
13 |
가좌동 970-1 |
|
가좌동 970-1 |
|
D2 =INDIRECT("B"&MAX(IF(MID(B$2:B$13,FIND("동 ",B$2:B$13,1)+2,IF(ISERROR(FIND("-",B$2:B$13,1)),LEN(B$2:B$13)+1,FIND("-",B$2:B$13,1))-FIND("동 ",B$2:B$13,1)-2)+IF(ISERROR(FIND("-",B$2:B$13,1)),0,MID(B$2:B$13,FIND("-",B$2:B$13,1)+1,LEN(B$2:B$13)-FIND("-",B$2:B$13,1)+1))/10^LEN(IF(ISERROR(FIND("-",B$2:B$13,1)),0,MID(B$2:B$13,FIND("-",B$2:B$13,1)+1,LEN(B$2:B$13)-FIND("-",B$2:B$13,1)+1)))=SMALL(MID(B$2:B$13,FIND("동 ",B$2:B$13,1)+2,IF(ISERROR(FIND("-",B$2:B$13,1)),LEN(B$2:B$13)+1,FIND("-",B$2:B$13,1))-FIND("동 ",B$2:B$13,1)-2)+IF(ISERROR(FIND("-",B$2:B$13,1)),0,MID(B$2:B$13,FIND("-",B$2:B$13,1)+1,LEN(B$2:B$13)-FIND("-",B$2:B$13,1)+1))/10^LEN(IF(ISERROR(FIND("-",B$2:B$13,1)),0,MID(B$2:B$13,FIND("-",B$2:B$13,1)+1,LEN(B$2:B$13)-FIND("-",B$2:B$13,1)+1))),ROW()-ROW(D$2)+1),ROW(B$2:B$13),0))) ; 수식 입력 후 CTRL+SHIFT+ENTER (배열 수식) D2 잡아 데이타 행 만큼 아래로 복사하면 작업 끝.
D2의 수식 설명
F2 =FIND("동 ",B2,1)
F3 =IF(ISERROR(FIND("-",B2,1)),LEN(B2)+1,FIND("-",B2,1))
F4 =MID(B2,F2+2,F3-F2-2)
F5 =MID(B2,FIND("동 ",B2,1)+2,IF(ISERROR(FIND("-",B2,1)),LEN(B2)+1,FIND("-",B2,1))-FIND("동 ",B2,1)-2)
F6 =IF(ISERROR(FIND("-",B2,1)),0,MID(B2,FIND("-",B2,1)+1,LEN(B2)-FIND("-",B2,1)+1))
F7 =F5+F6/10^LEN(F6)
F2에서 주소 시작 위치 계산, F3에서는 하이픈(-)위치 계산, 하이픈이 없을 경우(예: 가좌동 235)도 있을 터이니 하이픈이 없으면 마지막+1을 하이픈 위치로 둠. F4에서 하이픈 왼쪽 문자열을 MID로 가져옴. 이걸 중간정리, 한 셀에 구겨 넣으면 F5가 됨. F6에서는 하이픈 오른쪽 문자열을 가져옴 (하이픈이 없으면 0). F7에서는 (비교를 위해) 왼쪽.오른쪽으로 숫자를 만듬.
D2는 INDIRECT("B"&MAX(IF(F5=SMALL(F5,1),ROW(범위),0))의 구조임. 즉, 배열수식으로 범위를 F5자리에 넣어 위에서 만든 숫자의 전체순위가 당행에 맞는 행을 구해 INDIRECT로 문자열을 가져 옴. 이걸 원용해 동 이름이 다를 때 비교도 이론상 가능하지만 "수식이 너무 깁니다"가 뜰 것임. 보조셀 경유하여 죽죽 미는 것이 훨씬 실전적임.
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
문자별 일련번호 부여 (0) | 2008.11.13 |
---|---|
코드 순차에 맞춰 형태 데이타 집계 (SMALL, SUMPRODUCT) (0) | 2008.11.13 |
행렬 곱하기 (0) | 2008.11.13 |
가로/세로 조건을 만족하는 셀값 가져오기 (0) | 2008.11.13 |
이름 기준 중복 사전 정렬 (0) | 2008.11.13 |