기본 콘텐츠로 건너뛰기

[엑셀]LEFT·RIGHT·MID의 공통점 — 텍스트는 결국 문자들의 배열이다

 "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로 한 글자씩 뽑아보는 것이다.

  1. =MID("엑셀",1,1) → "엑" (1번째 자리 문자 1개)
  2. =MID("엑셀",2,1) → "셀" (2번째 자리 문자 1개)
  3. =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을 살펴본다.

이 블로그의 인기 게시물

[엑셀]엑셀 날짜는 사실 숫자다 — 1900년부터 세어온 일련번호의 정체

 날짜가 적힌 셀에 그냥 1을 더하면 무슨 일이 벌어질까? 신기하게도 결과는 정확히 '다음 날 날짜'가 된다. 문자처럼 보이는 날짜에 어떻게 숫자를 더했는데 날짜가 하루 늘어날 수 있을까. 답은 간단하다. 엑셀에서 날짜는 애초에 문자가 아니라 숫자이기 때문이다. 날짜가 숫자로 저장된다는 사실 확인하기 날짜가 입력된 셀의 서식을 '일반'으로 바꿔보면 그 정체가 바로 드러난다. 2026-01-15라고 표시되던 셀이 갑자기 46037 같은 숫자로 바뀐다. 이 숫자가 바로 엑셀이 내부적으로 이 날짜를 저장하고 있는 실제 값, 즉 시리얼 넘버(일련번호)다. 화면에 "2026-01-15"라고 보이는 것은 앞서 TEXT 함수 편에서 다룬 것처럼, 이 숫자 위에 날짜 서식이라는 표시 규칙이 덧씌워진 결과일 뿐이다. 1900년을 기준으로 세는 시리얼 넘버 시스템 엑셀은(윈도우 버전 기준) 1900년 1월 1일을 시리얼 넘버 1로 정하고, 그날부터 하루가 지날 때마다 숫자를 1씩 늘려가는 방식으로 날짜를 표현한다. 46037이라는 숫자는 곧 "1900년 1월 1일로부터 46,037번째 되는 날"이라는 뜻이다. 날짜에 숫자를 더하거나 빼는 계산이 자연스럽게 되는 이유가 바로 여기에 있다. 날짜끼리의 덧셈·뺄셈은 사실 이 일련번호끼리의 평범한 산술 연산일 뿐이다. =DATE(2026,1,15) + 30 이 수식은 2026년 1월 15일의 시리얼 넘버에 30을 더한 것과 같으므로, 결과는 정확히 30일 뒤의 날짜인 2026년 2월 14일이 된다. 시간은 어떻게 표현될까 — 소수점 이하가 하루의 몇 분의 몇인지 날짜가 정수로 표현된다면, 시간은 그 정수의 소수점 이하 부분으로 표현된다. 하루 24시간을 1로 놓았을 때, 낮 12시는 하루의 정확히 절반이므로 0.5가 된다. 예를 들어 46037.5라는 값은 "2026년 1월 15일 낮 12시"를 의미한다. 날짜와 시간이 함께 입력된 셀을 다룰 때 정수 부...

[엑셀]COUNTIF/COUNTIFS — 카운팅과 조건 매칭의 관계 SUMIF와의 구조적 유사성과 차이

 출석부를 관리하다 보면 "결석이 3회 이상인 학생 수"나 "이번 달 지각 횟수"처럼 특정 조건을 만족하는 항목이 '몇 개'인지 세야 하는 순간이 자주 온다. 앞선 글에서 다룬 SUMIF가 조건에 맞는 값들을 '더하는' 함수였다면, 이번에 다룰 COUNTIF는 조건에 맞는 항목이 '몇 개'인지를 세는 함수다. 이름도 구조도 SUMIF와 매우 닮았지만, 자세히 들여다보면 미묘하지만 중요한 차이가 하나 숨어 있다. COUNTIF의 기본 구조 =COUNTIF(A2:A100, "결석") COUNTIF는 조건을 검사할 범위와 조건, 이렇게 두 개의 인수만 받는다. A2:A100 범위에서 "결석"이라는 값과 일치하는 셀이 몇 개인지를 세어 그 개수를 반환한다. SUMIF와 COUNTIF의 구조적 유사성 지난 글에서 SUMIF의 원리를 "조건 범위를 참/거짓 배열로 바꾸고, 그 배열을 합계 범위 위에 겹쳐서 참인 위치만 더한다"고 설명했다. COUNTIF도 앞부분까지는 완전히 동일하다. 조건 범위를 검사해서 참/거짓 배열을 만드는 과정까지는 똑같다. 차이는 그다음이다. SUMIF는 이 배열을 다른 범위(합계 범위) 에 겹쳐서 값을 더하지만, COUNTIF는 겹칠 다른 범위 자체가 필요 없다. 그냥 참/거짓 배열에서 TRUE의 개수만 세면 끝나기 때문이다. 즉 "무엇을 더할지"를 지정할 필요가 없으므로 인수가 하나 줄어드는 것이다. 이렇게 보면 COUNTIF(범위, 조건)는 개념적으로 SUMIF(범위, 조건, 참거짓배열자체) 와 비슷한 일을 하는 셈이다. COUNTIFS — 여러 조건의 동시 만족 =COUNTIFS(A2:A100, "결석", B2:B100, ">=3") COUNTIFS 역시 SUMIFS와 동일한 방식으로 확장된다. 각 조건 범위마다 참/거짓 배열을 만들고, 이 배열들을...