"서울특별시 강남구 테헤란로 123"이라는 주소 한 줄을 시/구/도로명으로 각각 나눠야 하는 업무를 받았다고 해보자. 예전이라면 LEFT·MID·FIND를 여러 겹 조합해야 했을 이 작업이, 지금은 TEXTSPLIT 한 줄로 끝난다. 그리고 이렇게 쪼갠 조각들을 다시 원하는 형태로 이어 붙이는 반대 방향의 작업에는 TEXTJOIN이 쓰인다. 이 두 함수는 결국 '구분자'라는 하나의 개념을 축으로 서로 반대 방향을 바라보고 있다.
구분자 기반 파싱이라는 개념
"파싱(parsing)"이란 하나의 문자열을 정해진 규칙에 따라 의미 있는 조각들로 나누는 작업을 말한다. 이때 가장 널리 쓰이는 규칙이 '구분자'다. 콤마(,)로 구분된 CSV 파일, 공백으로 구분된 주소, 슬래시(/)로 구분된 날짜 모두 구분자를 기준으로 조각을 나눈다는 동일한 원리를 공유한다. TEXTSPLIT은 바로 이 '구분자를 기준으로 나눈다'는 규칙을 함수 하나로 구현한 것이다.
TEXTSPLIT의 원리
=TEXTSPLIT("서울특별시 강남구 테헤란로 123", " ")이 수식은 공백(" ")을 구분자로 삼아 원본 텍스트를 조각내고, 그 결과를 앞서 다룬 동적 배열(스필) 방식으로 여러 셀에 자동으로 펼쳐 보여준다. 결과는 "서울특별시", "강남구", "테헤란로", "123" 네 개의 조각으로 나뉜다. 구분자를 콤마나 슬래시처럼 다른 기호로 바꾸면 CSV 데이터나 날짜 문자열을 나누는 데도 똑같은 원리로 응용할 수 있다.
TEXTJOIN — 반대 방향의 작업
=TEXTJOIN(", ", TRUE, B2:B5)TEXTJOIN은 여러 셀에 흩어진 값들을, 지정한 구분자를 사이사이에 끼워가며 하나의 텍스트로 합친다. 두 번째 인수(TRUE)는 빈 셀을 무시할지 여부를 정하는데, TRUE로 두면 빈 셀은 건너뛰고 값이 있는 셀들만 구분자로 이어붙인다. TEXTSPLIT이 "하나를 여러 개로" 나누는 함수라면, TEXTJOIN은 정확히 그 반대인 "여러 개를 하나로" 합치는 함수다.
| 구분 | TEXTSPLIT | TEXTJOIN |
|---|---|---|
| 방향 | 하나의 텍스트 → 여러 조각 | 여러 값 → 하나의 텍스트 |
| 핵심 개념 | 구분자를 기준으로 자르기 | 구분자를 사이사이에 끼워 넣기 |
| 결과 형태 | 동적 배열(스필)로 여러 셀에 펼쳐짐 | 텍스트 하나(셀 하나) |
여러 구분자를 동시에 처리하기
주소처럼 구분자가 한 종류가 아닐 때도 있다. "서울-강남구,테헤란로"처럼 하이픈과 콤마가 섞여 있다면, TEXTSPLIT에 구분자를 배열로 함께 넘기면 된다.
=TEXTSPLIT("서울-강남구,테헤란로", {"-",","})이 수식은 하이픈과 콤마 둘 중 어느 것을 만나도 그 지점에서 텍스트를 자른다. 구분자가 여러 종류라는 것은 결국 "이 기호이거나 저 기호를 만나면 자른다"는 OR 조건과 같은 발상이라, 배열로 여러 구분자를 한 번에 넘길 수 있도록 설계된 것이다.
자주 하는 실수
TEXTSPLIT은 스필로 결과가 펼쳐지므로, 결과가 채워질 자리에 이미 다른 값이 있으면 앞서 스필 편에서 다룬 #SPILL! 오류를 그대로 만날 수 있다. TEXTJOIN은 반대로, 구분자를 빈 문자열("")로 지정하면 아무 구분 없이 값들이 그냥 붙어버리므로, 원하는 형태가 맞는지 결과를 항상 확인하는 습관이 필요하다.
Q. TEXTSPLIT은 몇 개 버전부터 쓸 수 있나요?
TEXTSPLIT과 TEXTJOIN 모두 Microsoft 365 버전에서 사용 가능하며, TEXTJOIN은 엑셀 2019부터, TEXTSPLIT은 동적 배열과 함께 더 최근에 추가되었다.
Q. 줄바꿈 기준으로도 나눌 수 있나요?
가능하다. 구분자 자리에 줄바꿈 문자(CHAR(10))를 넣으면 한 셀 안에 여러 줄로 입력된 텍스트도 줄 단위로 쪼갤 수 있다.
Q. 나눈 결과를 다시 원래대로 합치면 원본과 똑같아지나요?
구분자를 동일하게 맞춰서 TEXTJOIN으로 합치면 대부분 원본과 같아지지만, 원본에 연속된 구분자(예: 공백 두 칸)가 있었다면 TEXTSPLIT이 이를 어떻게 처리했는지에 따라 완전히 같지 않을 수도 있다.
마무리
TEXTSPLIT과 TEXTJOIN은 '구분자'라는 하나의 개념을 두고 서로 반대 방향으로 움직이는 한 쌍의 함수다. 다음 글에서는 문자열이 아니라 날짜를 다루는 이야기로 넘어가, 엑셀에서 날짜가 실제로는 하나의 숫자로 저장되어 있다는 시리얼 넘버 원리를 살펴본다.