엑셀 MID·LEFT·RIGHT 함수 가이드: 위치찾기·가변 길이 완전정리

엑셀 MID·LEFT·RIGHT 함수 가이드: 위치찾기·가변 길이 완전정리

엑셀 MID·LEFT·RIGHT 함수 완벽 가이드: 기본부터 가변 길이 실무 응용

엑셀 MID LEFT RIGHT 함수는 텍스트에서 원하는 “일부분”을 뽑는 가장 기본 도구입니다. 이 글은 기초 문법부터 가변 길이 추출(FIND/SEARCH), 한글/바이트 이슈, 표·동적배열 연계까지, 현장에서 바로 쓰는 패턴을 단계별로 정리합니다.

빠른 해결(Quick Fix)

기본 문법 한눈에

  • LEFT(text, [num_chars]): 왼쪽에서 num_chars만큼.
  • RIGHT(text, [num_chars]): 오른쪽에서 num_chars만큼.
  • MID(text, start_num, num_chars): start_num번째 문자부터 num_chars개.
  • 위치 찾기 도우미: FIND()=대소문자 구분, SEARCH()=대소문자 무시/와일드카드.
  • 길이: LEN() (문자 수). 구버전/특정 로캘에서 LENB()는 바이트 수.

자주 쓰는 10가지 패턴

  1. 전화번호 마지막 4자리: =RIGHT(A2,4)
  2. 이메일 사용자명( @ 앞 ): =LEFT(A2, FIND("@",A2)-1)
  3. 이메일 도메인( @ 뒤 ): =MID(A2, FIND("@",A2)+1, LEN(A2))
  4. 파일 확장자: =RIGHT(A2, LEN(A2)-FIND("@",SUBSTITUTE(A2,".","@",LEN(A2)-LEN(SUBSTITUTE(A2,".","")))))
  5. 앞 3글자: =LEFT(A2,3)
  6. 뒤 2글자: =RIGHT(A2,2)
  7. 하이픈 앞 코드: =LEFT(A2, FIND("-",A2)-1)
  8. 하이픈 뒤 코드: =MID(A2, FIND("-",A2)+1, LEN(A2))
  9. N번째 구분자 뒤(예: 2번째 ‘-’ 뒤): =MID(A2, FIND("@",SUBSTITUTE(A2,"-","@",2))+1, LEN(A2))
  10. 숫자만/문자만 추출(365):
    숫자만: =TEXTJOIN("",,IFERROR(MID(A2,SEQUENCE(LEN(A2)),1)*1,""))
    문자만: =TEXTJOIN("",,IF(ISTEXT(MID(A2,SEQUENCE(LEN(A2)),1)),MID(A2,SEQUENCE(LEN(A2)),1),""))

왜 이런 문제가 생기나(개념·원리)

위치 기반 추출의 핵심

문자열 파싱은 결국 시작 위치길이 문제입니다. 길이를 모르면 LEN(text) - 시작+1처럼 계산하거나, FIND/SEARCH다음 경계를 찾아 차이를 길이로 씁니다.

FIND vs SEARCH, LEN vs LENB

  • FIND: 대소문자 구분, 와일드카드 X. SEARCH: 대소문자 무시, 와일드카드 ?,* 지원.
  • 현대 엑셀/유니코드 환경에서는 MID/LEFT/RIGHT 중심으로 사용하세요. MIDB/LEFTB/RIGHTB/LENBDBCS(한자/일본어/중국어) 바이트 수를 다루는 구버전 호환용으로, 혼용하면 오히려 헷갈릴 수 있습니다.

실무 예제

샘플 데이터

A(원문)의도
2p1001-SEOUL-XLSKU 분해
3kim@exceljump.com이메일 분해
4010-1234-5678전화 뒷자리
5Report_v2.1_final.xlsx확장자
6[KR] 2025-11-13 / CENTER-02기호 기반 추출

1) SKU/코드 분해(고정+가변 혼합)

A2가 p1001-SEOUL-XL일 때:

  • 상품코드(하이픈 앞): =LEFT(A2, FIND("-",A2)-1)p1001
  • 도시(첫~둘째 하이픈 사이): =MID(A2, FIND("-",A2)+1, FIND("@",SUBSTITUTE(A2,"-","@",2)) - FIND("-",A2) - 1)SEOUL
  • 사이즈(마지막 하이픈 뒤): =MID(A2, FIND("@",SUBSTITUTE(A2,"-","@",LEN(A2)-LEN(SUBSTITUTE(A2,"-",""))))+1, LEN(A2))XL

2) 이메일 분해

  • 아이디: =LEFT(A3, FIND("@",A3)-1)kim
  • 도메인: =MID(A3, FIND("@",A3)+1, LEN(A3))exceljump.com
  • 최상위 도메인(TLD): =RIGHT(A3, LEN(A3)-FIND(".",A3, FIND("@",A3)))com

3) 전화번호 / 마지막 4자리

=RIGHT(SUBSTITUTE(A4,"-",""),4)5678
하이픈 유무에 상관없이 마지막 4자리만.

4) 파일 확장자 추출(마지막 점 기준)

=RIGHT(A5, LEN(A5)-FIND("@",SUBSTITUTE(A5,".","@", LEN(A5)-LEN(SUBSTITUTE(A5,".","")))))xlsx

5) 복합 문자열에서 특정 구간 뽑기

A6 = [KR] 2025-11-13 / CENTER-02

  • 국가코드(대괄호 안): =MID(A6, FIND("[",A6)+1, FIND("]",A6)-FIND("[",A6)-1)KR
  • 센터코드(슬래시 뒤 공백 후): =MID(A6, FIND("/",A6)+2, LEN(A6))CENTER-02

6) 표(Structured Reference)와 동적배열

범위를 표(Ctrl+T)로 만들고 이름을 tblOrders, 열이 [Email]이라면:

=LEFT(tblOrders[Email], FIND("@", tblOrders[Email]) - 1)

365/2021 이상에서는 TEXTSPLIT로 더 간단히:

=TEXTSPLIT(tblOrders[Email], "@")

스필된 첫 열이 아이디, 두 번째 열이 도메인입니다.

7) LET로 읽기 쉬운 공식 만들기

=LET(
  s, A2,
  p1, FIND("-", s),
  p2, FIND("@", SUBSTITUTE(s,"-","@",2)),
  code, LEFT(s, p1-1),
  city, MID(s, p1+1, p2-p1-1),
  size, MID(s, p2+1, LEN(s)),
  code & " | " & city & " | " & size
)

중복 계산을 변수로 치환해 가독성과 속도를 함께 개선합니다.

대체 방법/주의/체크리스트

  • 가변 길이는 항상 FIND/SEARCH로 “경계” 위치를 잡고 길이를 계산합니다.
  • 한글/다국어는 기본적으로 MID/LEFT/RIGHT로 처리하세요. 특수한 DBCS 환경에서만 B함수(MIDB 등)를 고려합니다.
  • 여분 공백/보이지 않는 공백(CHAR(160))은 TRIM/SUBSTITUTE로 정리 후 파싱하세요.
  • 숫자 계산이 필요하면 추출 후 VALUE()로 숫자로 변환합니다.
  • 동일 패턴이 반복되면 (구조화참조)로 전환하거나 Power Query로 영구 변환을 검토하세요.

Troubleshooting

증상원인해결법
#VALUE! / #NUM! FIND 결과 0/음수 길이, 시작 위치 계산 오류 경계 문자가 존재하는지 확인, IFERROR로 예외 처리
이메일 도메인이 잘림 마지막 점 위치 계산 누락 SUBSTITUTE(...,".","@",개수)로 마지막 점을 찾음
한글 문자 깨짐 바이트 함수 혼용 MID/LEFT/RIGHT만 사용(현대 유니코드 권장)
하이픈 유무가 섞임 정규화 미실시 SUBSTITUTE(text,"-","")로 먼저 통일
대량 데이터 느림 복잡한 중첩 FIND 반복 LET로 중복계산 제거, Power Query로 전처리

마무리: 관련 글 추천

Leave a Reply

Your email address will not be published. Required fields are marked *