"010-1234-5678"이라는 전화번호에서 가운데 네 자리만 뽑아내고 싶을 때, 많은 사람이 LEFT나 RIGHT는 익숙하게 쓰면서도 MID는 어렵게 느낀다. 그런데 이 세 함수는 사실 하나의 동일한 원리 위에서 동작한다. 텍스트를 하나의 덩어리가 아니라, 문자 하나하나가 순서대로 나열된 '배열'로 바라보는 관점이다.
텍스트를 문자 단위 배열로 보는 관점
"엑셀"이라는 두 글자 텍스트는, 배열의 눈으로 보면 1번째 자리에 "엑", 2번째 자리에 "셀"이 들어 있는 구조와 다르지 않다. 앞서 여러 글에서 다룬 배열이 셀들의 모음이었다면, 문자열 함수에서의 배열은 '문자들의 모음'이라는 점만 다를 뿐 "위치를 기준으로 원하는 부분만 골라낸다"는 발상 자체는 동일하다.
LEFT·RIGHT·MID가 공유하는 하나의 원리
=LEFT("010-1234-5678", 3) → "010"
=RIGHT("010-1234-5678", 4) → "5678"
=MID("010-1234-5678", 5, 4) → "1234"세 함수 모두 "어디서부터, 몇 글자를" 가져올지를 지정한다는 점에서 본질적으로 같은 함수다. LEFT는 항상 1번째 자리부터 시작한다고 고정해둔 것이고, RIGHT는 항상 끝에서부터 거꾸로 센 것이며, MID는 시작 위치를 자유롭게 지정할 수 있도록 일반화한 버전이다. 즉 LEFT와 RIGHT는 MID의 특수한 경우라고 볼 수 있다.
MID로 문자 단위 추출을 직접 확인해보기
이 원리를 직접 확인해보는 가장 좋은 방법은 MID로 한 글자씩 뽑아보는 것이다.
=MID("엑셀",1,1)→ "엑" (1번째 자리 문자 1개)=MID("엑셀",2,1)→ "셀" (2번째 자리 문자 1개)=MID("엑셀",1,2)→ "엑셀" (1번째 자리부터 문자 2개)
이렇게 시작 위치와 개수만 바꿔가며 결과를 비교해보면, 텍스트가 정말 순서를 가진 배열처럼 다뤄지고 있다는 감각을 눈으로 확인할 수 있다.
다른 함수와 결합하면 더 강력해진다
실무에서는 LEFT·RIGHT·MID를 고정된 숫자와 함께 쓰기보다, FIND나 LEN 같은 함수와 결합해서 '가변적인 위치'를 자동으로 찾아내는 경우가 더 많다.
=LEFT(A2, FIND("@", A2)-1)이 수식은 이메일 주소에서 "@" 기호가 나오는 위치를 FIND로 먼저 찾은 뒤, 그 바로 앞자리까지를 LEFT로 잘라내 아이디 부분만 추출한다. 고정된 숫자 대신 FIND가 찾아낸 위치를 동적으로 넘겨준다는 점에서, 이는 텍스트 배열에서 '조건에 맞는 위치'를 먼저 찾고 그 위치를 기준으로 잘라내는 2단계 접근이다.
자주 하는 실수
MID의 세 번째 인수(가져올 글자 수)를 실제보다 크게 지정해도 오류는 나지 않는다. 텍스트 끝까지만 가져오고 나머지는 자연스럽게 무시되기 때문이다. 반면 시작 위치가 텍스트 길이를 넘어서면 빈 문자열이 반환된다는 점은 예상과 다르게 동작할 수 있으니 주의가 필요하다. 또한 한글, 영문, 숫자가 섞인 텍스트에서 '몇 번째 글자'를 셀 때는 띄어쓰기나 특수문자도 하나의 글자로 계산된다는 점을 놓치기 쉽다.
Q. 텍스트 전체 길이는 어떻게 구하나요?
LEN 함수를 사용하면 된다. =LEN("엑셀")은 2를 반환하며, 이 값은 RIGHT나 MID로 끝부분을 계산할 때 자주 함께 쓰인다.
Q. 숫자에도 LEFT·RIGHT·MID를 쓸 수 있나요?
가능하다. 엑셀은 숫자를 문자열 함수에 넣으면 자동으로 텍스트로 취급해 처리한다. 다만 결과값은 텍스트가 되므로, 다시 계산에 쓰려면 VALUE로 숫자로 변환해줘야 한다.
마무리
LEFT·RIGHT·MID를 각각 따로 외우기보다, "텍스트는 문자들이 순서대로 나열된 배열이고, 이 세 함수는 그 배열에서 원하는 구간을 잘라내는 하나의 원리를 공유한다"고 이해하면 응용 범위가 훨씬 넓어진다. 다음 글에서는 이 원리를 확장해, 하나의 텍스트를 여러 조각으로 쪼개고 다시 합치는 TEXTSPLIT과 TEXTJOIN을 살펴본다.