Excel

특정 기호 사이의 문자 찾기(1)

별동산 2024. 4. 7. 09:25
반응형

1. 문제

아래와 같이 하이픈과 하이픈 사이의 문자를 찾고자 하는 경우가 많을 것입니다.

2. 해법

가. 논리

일반적으로 생각할 수 있는 것이 find 함수이고, 그다음 생각할 수 있는 것이 substitute 함수를 이용하는 것입니다.

 

나. find 함수를 이용하는 경우

(1) 첫 번째 하이픈의 위치 찾기
=find("-",B2)라고 하면 B2셀에서 첫 번째 하이픈의 위치를 알 수 있습니다.

 

5란 다섯 번째 위치에 하이픈이 있다는 것입니다.

 

(2) 두 번째 하이픈의 위치 찾기

두 번째 하이픈의 위치를 찾을 때는 첫 번째 하이픈 위치 다음부터 찾아야 첫 번째 하이픈이 찾아지는 것을 막을 수 있으면, 첫 번째 하이픈 위치 + 1을 find 함수의 세 번째 인수를 넣으면 됩니다.

따라서, 수식은

=find("-",B2,find("-",B2)+1)이 됩니다.

두 번째 하이픈의 위치가 첫 번째 위치 다음부터 세서 4가 아니라 맨 앞부터의 위치인 9로 표시됩니다.

 

(3) 하이픈 사이의 문자 찾기

이 때는 맨 왼쪽부터 일정한 개수의 문자를 가져오는 Left 함수와 결합하면 되고, 만약에 두 번째 하이픈부터 세 번째 하이픈 사이의 문자를 가져올 때는 Mid 함수를 사용해야 합니다.

 

(가) 첫 번째 하이픈 전까지의 문자 구하기

첫 번째 하이픈 전까지의 문자를 가져와야 하므로 개수는 하이픈의 위치 - 1이 되고,
수식은

=left(b2,find("-",b2)-1)이 됩니다.

 

(나) 두 번째 하이픈과 세 번째 하이픈 사이의 문자 구하기

Mid함수는 셀 주소, 시작 위치, 개수의 3가지 인수를 입력해야 합니다.

따라서, 수식은

=mid(b2,find("-",b2)+1,find("-",b2,find("-,b2)+1)-find("-",b2)-1)

 

위 수식에서 find("-",b2)+1은 시작 위치로 첫 번째 하이픈의 위치 다음을 의미하며,
find("-",b2,find("-,b2)+1)-find("-",b2)-1은 find("-",b2,find("-,b2)+1)은 가져올 문자의 길이로서, 두 번째 하이픈의 위치(9)에서 첫 번째 하이픈의 위치(5)를 빼면 4가 되기 때문에 다시 1을 빼서 구합니다.

이런 식으로 하이픈의 개수가 많아질수록 문자를 구하는 수식이 복잡해집니다.

 

(다) 두 번째와 세 번째 하이픈 사이의 문자 구하기

위와 마찬가지 논리인데, 두 번째 하이픈의 위치 + 1에서 세 번째 하이픈의 위치 - 두 번째 하이픈의 위치 - 1에 해당하는 길이만큼 문자를 가져와야 합니다.

 

따라서, 수식은

=MID(B2,FIND("-",B2,FIND("-",B2)+1)+1,FIND("-",B2,FIND("-",B2,FIND("-",B2)+1)+1)-FIND("-",B2,FIND("-",B2)+1)-1)
가 됩니다.

 

두 번째 하이픈을 구하는 수식과 세 번째 하이픈의 위치를 구하는 수식을 비교해 보기 바랍니다.

 

FIND("-",B2,FIND("-",B2)+1)

FIND("-",B2,FIND("-",B2,FIND("-",B2)+1)+1)

 

세 번째 하이픈의 위치를 구할 때 두 번째 하이픈을 구하는 수식이 find 함수의 세 번째 인수인 시작 위치에 들어가 있습니다.

 

(라) 네 번째 위치의 문자 구하기

이건 간단합니다. 오른쪽 한 글자를 가져오면 되기 때문입니다.

 

그런데 한 개가 아닐 수도 있으므로 세 번째 하이픈 위치 + 1부터 여러 개, 예를 들어 10을 입력하면 됩니다.

첫 번째 오른쪽 한 글자를 가져오는 수식은
=right(b2,1)이고,

 

세 번째 하이픈의 위치 + 1부터 10개의 문자를 가져오는 수식은
=MID(B2,FIND("-",B2,FIND("-",B2,FIND("-",B2)+1)+1)+1,10)이 됩니다.

 

(다)의 수식보다는 짧지만 여전히 복잡합니다.

 

다. find 함수를 이용하는 경우 2

두 번째와 세 번째 사이의 문자를 구할 때
예제를 살펴보면 두 번째 하이픈의 위치가 6번째 이후에 있고,
세 번째 하이픈의 위치는 문자열의 길이에서 1을 뺀 위치에 있습니다.

따라서, 아래와 같이 두 번째 하이픈의 위치를 아래와 같이 간단한 수식으로 가능합니다.

=find("-",b2,6)

 

그리고, 세 번째 하이픈의 위치는 =len(b2)-1이 됩니다.

따라서, mid함수와 결합하면

=MID(B2,FIND("-",B2,6)+1,LEN(B2)-1-FIND("-",B2,6)-1)가 됩니다.

Substitute를 이용한 문자열 추출하기는 다음 편에서 다루도록 하겠습니다.

 

특정 기호 사이의 문자 추출(완성(1).xlsx
0.01MB

반응형