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를 이용한 문자열 추출하기는 다음 편에서 다루도록 하겠습니다.
'Excel' 카테고리의 다른 글
셀 병합 유지 상태에서 합계 등 구하기 (0) | 2024.04.09 |
---|---|
특정 기호 사이의 문자 찾기(2) (0) | 2024.04.08 |
동점일 경우 다른 기준으로 순위 매기기 (0) | 2024.04.06 |
문자열내 문자의 개수 세기 (0) | 2024.04.01 |
중복 값 제거하고 세기 (2) | 2024.03.26 |