Excel

TextBefore와 TextAfter 함수를 이용해 주소를 법정동과 지번으로 분리하기

별동산 2024. 6. 18. 08:50
반응형

TextBefore와 TextAfter함수는 Microsoft 365 버전에서만 사용가능하기 때문에 사용에 제약이 있지만 쉽게 주소에서 법정동과 지번을 분리해 낼 수 있으므로 알아보겠습니다.

 
1. 구문
TextBefore함수의 구문은
=TEXTBEFORE(text,delimiter,[instance_num], [match_mode], [match_end], [if_not_found])로서

text는 범위로 지정하면 되며
delimiter는 구분자로 문자열을 나눌 구분 기호 또는 문자열이 됩니다. 예를 들어 쉼표(,) 또는 한 칸 공백(" ")이 될 수 있습니다.
 
[instance_num]은 몇 번째인지를 지정하는 것으로 음수도 가능하면 음수인 경우는 뒤에서부터 가져옵니다.
 
2. 적용
 

주소분리하기(textbefore,textafter).xlsx
0.01MB

 

 
가. '산'이 있는지 여부 판단하기
'산청군'이 있기 때문에 단순히 '산'과 일치하는지 여부로 판단하면 안 되고,
'산 '과 일치하는지 여부로 판단해야 합니다.
 
수식은 =if(isnumber(find("산 ",a2)),참일 경우 값, 거짓일 경우 값)이 됩니다.
 
find("산 ",a2)라고만 하면 "산 "이 없을 경우 에러가 발생하기 때문에
앞에 IsNumber함수를 붙여야 합니다.
 
나. '산 "이 있는지 여부에 따라 법정동 가져오기
"산 "이 있을 경우는 공백의 개수-1까지 가져오고,
아니면 공백의 개수만큼 가져오면 됩니다.
 
여기서 공백의 개수는
문자열 전체의 길이에서 한 칸 공백을 공백으로 만든 다음의 문자열 길이를 빼서 구합니다.
수식은 LEN(A2)-LEN(SUBSTITUTE(A2," ",""))가 됩니다.
 
SUBSTITUTE(A2," ","")가 A2셀에서 한 칸 공백을 빈칸으로 만드는 수식입니다.
 
이제 A2셀에서 공백의 개수 또는 공백의 개수-1만큼 문자열을 가져오면 되므로
=IF(ISNUMBER(FIND("산 ",A2)),
TEXTBEFORE(A2," ",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1),
TEXTBEFORE(A2," ",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))))
이 됩니다.

 
참일 때 값에는 -1이 있고, 거짓일 때 값에는 -1이 없습니다.
 
이제 B2셀의 채우기 핸들을 더블 클릭하면

 
'산'이 있을 때는 그전까지 가져오고, 아니면 숫자 전까지 가져옵니다.
 
다. '산 "이 있는지 여부에 따라 지번 가져오기
TextBefore를 TextAfter로 바꾸면 됩니다.
따라서, B2셀을 복사한 후 C2셀에 붙여 넣고,
Esc키를 눌러 복사한 범위를 해제한 후
 
홈 탭의 찾기 및 선택 명령을 누른 다음 바꾸기 명령(Ctrl + H)을 누르고
찾을 내용에 textbefore를 입력하고,
바꿀 내용에 textafter를 입력한 다음
'바꾸기'버튼을 누르고, 

 
다시 C2셀을 클릭한 다음 b2를 a2로 바꾸면 됩니다.

 
이제 '찾기 및 바꾸기' 창의 닫기 버튼을 누르고,
C2셀의 채우기 핸들을 더블 클릭하면
지번이 맞게 구해집니다.
 

 
=IF(ISNUMBER(FIND("산 ",A2)),
TEXTAFTER(A2," ",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1),
TEXTAFTER(A2," ",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))))
 
위 수식은 보기 좋게 하기 위해 편집한 것이고, Microsoft 전 버전에서는 안될 겁니다.
 

주소분리하기(textbefore,textafter)(완성).xlsx
0.01MB
반응형