엑셀 TEXTSPLIT · TEXTBEFORE · TEXTAFTER — 전화·이메일·SKU 추출 25가지 실무 레시피

엑셀 TEXTSPLIT · TEXTBEFORE · TEXTAFTER — 전화·이메일·SKU 추출 25가지 실무 레시피

엑셀 TEXTSPLIT · TEXTBEFORE · TEXTAFTER — 전화·이메일·SKU 추출 25가지 실무 레시피

검증 기준: Excel 365 최신 함수 기반. 실제 예제로 직접 재현했으며, 초안 정리에 AI 도구를 보조적으로 활용했습니다.

1) 치트시트(기본 문법)

// TEXTSPLIT(text, col_delimiter, [row_delimiter], [ignore_empty], [match_mode], [pad_with])
=TEXTSPLIT(A2, ", ")

// TEXTBEFORE/AFTER(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found])
=TEXTBEFORE(A2, "-")          // 첫 '-' 앞
=TEXTAFTER(A2,  "-", 2)       // 두 번째 '-' 뒤
=TEXTAFTER(A2, {"-","/"})     // 여러 구분자 중 첫 일치 뒤

2) 패턴별 레시피 25가지(복붙용)

① 이름 · 이메일 분리

=TEXTBEFORE(A2, " <")              // 이름
=TEXTBETWEEN(A2, "<", ">")          // 이메일(각괄호)

② 이메일 아이디/도메인/최상위도메인

=TEXTBEFORE(A2, "@")
=TEXTAFTER(A2, "@")
=TEXTAFTER(TEXTAFTER(A2, "@"), ".")

③ 전화번호에서 숫자만

=LET(t,A2, d,SEQUENCE(LEN(t)),
TEXTJOIN("",,IF(ISNUMBER(--MID(t,d,1)), MID(t,d,1), "")))

④ 우편번호 5자리 추출(문장 중)

=TEXTAFTER(TEXTBEFORE(A2," ",-1)," ",-1)    // 마지막 두 공백 사이

⑤ SKU: 앞 3문자-숫자-옵션

=TEXTBEFORE(A2,"-")                         // Prefix
=TEXTBETWEEN(A2,"-","-")                       // 숫자
=TEXTAFTER(A2,"-",2)                           // 옵션

⑥ 여러 구분자 한 번에

=TEXTSPLIT(A2, {", "," | ","/"," · "})

⑦ n번째 항목 뽑기

=INDEX(TEXTSPLIT(A2,", "), 1, 3)            // 3번째

⑧ 좌우 트리밍 + 비가시문자 제거

=TRIM(SUBSTITUTE(A2,CHAR(160)," "))

⑨ 제품명에서 괄호 안 옵션 제거

=TEXTBEFORE(A2, " (")

⑩ 도메인 루트만(서브도메인 제외)

=LET(d,TEXTAFTER(A2,"@"), TEXTAFTER(d,".",-1)&"."&TEXTAFTER(d,".",-2))

⑪ 해시태그 분리

=FILTER(TEXTSPLIT(A2," "), LEFT(TEXTSPLIT(A2," "),1)="#")

⑫ 주소에서 시/구/동

=TEXTBEFORE(A2,"구")+ "구" & " " & TEXTBETWEEN(A2,"구 ","동")+ "동"

⑬ CSV 한 셀 → 표로

=TEXTSPLIT(A2, ",", CHAR(10), 1)           // 줄바꿈 기준 행 분리

⑭ 문장 마지막 단어

=TEXTAFTER(A2," ",-1)

⑮ 앞·뒤 불필요 접두/접미 제거

=TEXTAFTER(A2, "SKU: ")
=TEXTBEFORE(A2, " - end")

⑯ 가격 문자열 → 숫자

=--SUBSTITUTE(SUBSTITUTE(A2,",",""),"₩","")

⑰ 중간값 자르기(레이블:값)

=TEXTAFTER(A2, ": ")

⑱ 여러 행 합쳐 문장 만들기

=TEXTJOIN(", ",,A2:A10)

⑲ 규칙 없는 조합에서 영문/숫자만

=LET(t,A2, s,SEQUENCE(LEN(t)),
 TEXTJOIN("",,IF(OR(CODE(MID(t,s,1))={45,95}),MID(t,s,1),
 IF(ISNUMBER(--MID(t,s,1)),MID(t,s,1),
 IF((CODE(MID(t,s,1))>=65)*(CODE(MID(t,s,1))<=122),MID(t,s,1),"")))))

⑳ 날짜 텍스트 표준화

=DATEVALUE(TEXTAFTER(A2," ",-1))

㉑ 라벨+값을 2열로 스필

=TEXTSPLIT(A2, ": ", CHAR(10))

㉒ 머리글/꼬리글 제거 후 본문만

=TEXTBETWEEN(A2,"---START---","---END---")

㉓ URL에서 파라미터 값

=TEXTAFTER(TEXTBEFORE(A2,"&",-1),"id=")

㉔ 제품명 + 규격 분할

=TEXTSPLIT(A2," ",,1)     // 연속 공백 무시

㉕ 분리 후 고유 리스트

=SORT(UNIQUE(TOCOL(TEXTSPLIT(A2:A,", "),1)))

3) 사전 정제(공백·비가시문자)

  • 불가시 공백(CHAR(160)) → SUBSTITUTE로 통일
  • 여러 공백 → TEXTSPLITignore_empty=1 적용
  • 대소문자 표준화 → UPPER/LOWER/PROPER

4) FILTER/UNIQUE/XLOOKUP과 결합

// 해시태그에서 고유 태그 정렬
=SORT(UNIQUE(TOCOL(FILTER(TEXTSPLIT(A2:A," "),
 LEFT(TEXTSPLIT(A2:A," "),1)="#"),1)))
// 이메일 도메인별 고객 수
=LET(d, TEXTAFTER(B2:B,"@"), SORT(BYROW(UNIQUE(d), LAMBDA(x, COUNTIF(d,x))),2,-1))

5) 오류·성능 체크리스트

  • #VALUE! — 구분자 불일치 → IFERROR로 기본값 지정
  • 대량 데이터 → Power Query로 전처리 후 TEXT* 적용
  • 스필 참조는 =A2#로 범위를 안전하게 사용

6) 재방문 과제 & 템플릿

과제 A — “상품명(색상/사이즈)” 일괄 분리
=LET(x,TEXTBETWEEN(A2,"(",")"), HSTACK(TEXTBEFORE(A2," ("), TEXTBEFORE(x,"/"), TEXTAFTER(x,"/")))
과제 B — 고객 메모에서 이메일/전화 자동 추출
// 이메일
=FILTER(A2:A, ISNUMBER(SEARCH("@",A2:A)))

// 전화(숫자만 9자리 이상)
=FILTER(A2:A, LEN(LET(t,A2:A, TEXTJOIN("",,IF(ISNUMBER(--MID(t,SEQUENCE(LEN(t)),1)),MID(t,SEQUENCE(LEN(t)),1),""))))>=9)

이 글을 북마크하고, 다음 글 “LEFT/RIGHT/MID & FIND/SEARCH 콤보 심화”로 이어가면 텍스트 파이프라인이 완성됩니다.


Leave a Reply

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