엑셀 TEXTJOIN·CONCAT 함수 사용법 — 여러 칸을 구분자로 이어 붙이기(예제 표)
TEXTJOIN 형식과 이 글의 예제 표
TEXTJOIN 함수는 인수 3개 이상을 받으며, 순서는 구분자 → 빈 칸 무시 여부 → 이어 붙일 대상입니다. Microsoft 문서의 형식은 TEXTJOIN(delimiter, ignore_empty, text1, [text2], …)이고, 한국어 문서에도 같은 영문 함수명으로 안내되어 있습니다. 구분자(delimiter)는 이어 붙인 글자 사이에 넣을 문자를 말합니다.
| 인수 | 필수 여부 | 넣는 값 |
|---|---|---|
| delimiter(구분자) | 필수 | 큰따옴표로 묶은 문자(예: ", "), 빈 문자열(""), 또는 구분자가 적힌 셀 참조. 숫자를 넣으면 텍스트로 처리됩니다. |
| ignore_empty | 필수 | TRUE이면 빈 셀을 무시합니다. FALSE이면 빈 셀 자리에도 구분자가 들어갑니다. |
| text1 | 필수 | 이어 붙일 문자열 또는 셀 범위 |
| text2, … | 선택 | 추가로 이어 붙일 항목. 한국어 문서 기준으로 text1을 포함해 최대 252개까지 쓸 수 있습니다. |
글 전체에서 아래 A1:D9 직원 표 하나를 계속 씁니다. 메모(D열)는 일부러 대부분 비워 두었습니다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 이름 | 부서 | 직급 | 메모 |
| 2 | 김민수 | 영업 | 대리 | 신입 교육 |
| 3 | 이서연 | 영업 | 과장 | |
| 4 | 박지훈 | 기획 | 사원 | |
| 5 | 최유리 | 기획 | 대리 | 재택 |
| 6 | 정하늘 | 인사 | 부장 | |
| 7 | 한도윤 | 영업 | 사원 | |
| 8 | 윤서아 | 인사 | 사원 | 출장 |
| 9 | 강지호 | 기획 | 과장 |
D3·D4·D6·D7·D9는 비어 있는 셀입니다. 1행은 제목 줄이고, 데이터는 2~9행(8명)입니다.
TEXTJOIN은 Office 2019 이후 버전이나 Microsoft 365에서 쓸 수 있다고 안내되어 있습니다. 그보다 오래된 버전에서는 함수가 없어 오류가 날 수 있습니다. (출처: Microsoft 지원)
여러 칸을 구분자로 이어 붙이려면?
범위를 세 번째 인수에 넣으면 칸마다 이어 붙이지 않아도 한 번에 합쳐집니다. 이름 8명을 쉼표로 이어 붙이는 식은 아래와 같습니다.
=TEXTJOIN(", ",TRUE,A2:A9)
결과: 김민수, 이서연, 박지훈, 최유리, 정하늘, 한도윤, 윤서아, 강지호
행 방향(가로) 범위도 같은 방식입니다. 2행 한 사람의 정보를 슬래시로 잇는 예입니다.
=TEXTJOIN(" / ",TRUE,A2:D2)
결과: 김민수 / 영업 / 대리 / 신입 교육
두 줄 이상인 범위(예: B2:C3)를 넣으면 한 행씩 왼쪽에서 오른쪽으로, 위 행에서 아래 행 순서로 읽어 붙입니다.
=TEXTJOIN(", ",TRUE,B2:C3)
결과: 영업, 대리, 영업, 과장
범위와 글자를 섞어 쓸 수도 있습니다. 구분자 자리에 빈 문자열("")을 넣으면 사이에 아무것도 넣지 않고 붙입니다.
=TEXTJOIN("",TRUE,A2,"(",B2,")")
결과: 김민수(영업)
이름과 부서 같은 한 칸씩의 글자를 나누는 반대 작업은 LEFT·RIGHT·MID 함수로 문자열 일부를 자르는 방법에서 다룹니다.
빈 칸 때문에 구분자가 겹칠 때는?
두 번째 인수 ignore_empty를 TRUE로 하면 빈 칸은 건너뛰고, FALSE로 하면 빈 칸 자리에도 구분자가 들어가 구분자가 연달아 붙습니다. D2:D9 메모에는 값이 3개(신입 교육, 재택, 출장)뿐이라 차이가 분명히 보입니다.
| 수식 | 결과 |
|---|---|
=TEXTJOIN(" | ",TRUE,D2:D9) | 신입 교육 | 재택 | 출장 |
=TEXTJOIN("/",FALSE,D2:D9) | 신입 교육///재택///출장/ |
=TEXTJOIN(" / ",TRUE,A3:D3) | 이서연 / 영업 / 과장 |
=TEXTJOIN(" / ",FALSE,A3:D3) | 이서연 / 영업 / 과장 / |
검산: D2:D9는 8칸이라 구분자가 7개 들어갑니다. 2번째 식 결과의 슬래시를 세면 3+3+1=7개입니다. 4번째 식은 D3이 비어 있어 끝에 구분자가 하나 더 붙습니다.
대부분의 경우 TRUE를 쓰면 됩니다. 칸 위치를 그대로 보존해야 할 때(예: 자리 수가 정해진 코드)만 FALSE를 씁니다. 스페이스바만 입력한 칸은 빈 셀이 아니므로 TRUE여도 구분자가 붙습니다. 이럴 때는 해당 칸의 공백을 먼저 지웁니다.
CONCAT은 TEXTJOIN과 무엇이 다른가?
CONCAT 함수는 구분자 인수가 없어서 범위나 글자를 사이에 아무것도 넣지 않고 그대로 붙입니다. 형식은 CONCAT(text1, [text2], …)이며, text1에는 문자열 또는 셀 범위 같은 문자열 배열을 넣을 수 있습니다. Microsoft 문서는 CONCAT이 CONCATENATE 함수를 대체하며, CONCATENATE는 이전 버전과의 호환을 위해 남아 있다고 안내합니다. 또 구분자를 넣거나 빈 인수를 빼려면 TEXTJOIN을 쓰라고 안내합니다.
=CONCAT(A2:C2)
결과: 김민수영업대리
=CONCAT(A2,"(",B2,")")
결과: 김민수(영업)
같은 결과를 앰퍼샌드(&) 연산자로도 만들 수 있습니다. Microsoft 문서도 CONCAT 대신 &로 같은 항목을 이을 수 있다고 예시합니다.
=A2&" "&C2
결과: 김민수 대리
| 방법 | 구분자 | 범위 지정 | 적합한 경우 |
|---|---|---|---|
| TEXTJOIN | 첫 인수로 한 번 지정 | 가능(A2:A9) | 칸이 많고 구분자를 넣을 때 |
| CONCAT | 없음(직접 글자로 넣음) | 가능(A2:C2) | 구분자 없이 붙이거나 짧은 조합 |
| & 연산자 | 없음(직접 글자로 넣음) | 불가(칸을 하나씩) | 칸 2~3개를 간단히 이을 때 |
| CONCATENATE | 없음(직접 글자로 넣음) | 칸을 하나씩 지정하는 예로 안내됨 | 옛 파일 호환용. 새로 쓸 때는 CONCAT 권장 |
범위 지정 열은 Microsoft 지원 문서의 형식·예시 기준입니다.
CONCAT 문서에는 전체 열·전체 행 참조도 허용되므로 열 전체를 넣으면 아주 긴 결과가 나온다는 설명이 있습니다. 결과가 한 셀 한도인 32,767자를 넘으면 #VALUE! 오류가 납니다. 범위는 필요한 부분만 지정합니다.
조건에 맞는 칸만 이어 붙이려면?
TEXTJOIN의 범위 자리에 IF 함수를 넣으면 조건에 맞는 칸만 이어 붙일 수 있습니다. 조건에 안 맞는 칸은 빈 문자열("")로 바꾸고, ignore_empty를 TRUE로 두면 그 자리가 건너뛰어집니다. 영업 부서 이름만 모으는 식입니다.
=TEXTJOIN(", ",TRUE,IF(B2:B9="영업",A2:A9,""))
결과: 김민수, 이서연, 한도윤
조건을 셀에 적어 두면 부서만 바꿔 가며 다시 쓸 수 있습니다. F1 셀에 부서명을 적었다고 하면 다음과 같습니다.
=TEXTJOIN(", ",TRUE,IF($B$2:$B$9=F1,$A$2:$A$9,""))
| F1 값 | 결과 | 해당 행 |
|---|---|---|
| 영업 | 김민수, 이서연, 한도윤 | 2·3·7행 |
| 기획 | 박지훈, 최유리, 강지호 | 4·5·9행 |
| 인사 | 정하늘, 윤서아 | 6·8행 |
검산: 영업 3명 + 기획 3명 + 인사 2명 = 8명으로 A2:A9 전체와 같습니다.
IF 안에 범위를 넣는 이 방식은 범위 전체를 한 번에 계산하는 배열 수식입니다. 버전에 따라 입력 방식이 달라 결과가 안 나올 수 있으니(예: 배열 수식으로 입력해야 하는 경우) 사용 중인 버전에서 결과를 확인합니다. 이 부분은 이번에 확인한 Microsoft 문서에서 별도로 다루지 않았습니다.
조건에 맞는 칸의 개수만 필요하면 COUNTIF·COUNTIFS로 조건에 맞는 칸 개수 세기가 더 간단합니다.
숫자·날짜·줄 바꿈을 넣어 붙이려면?
숫자나 날짜를 글자와 이을 때는 TEXT 함수로 모양을 먼저 정해 주는 방법이 일반적입니다. Microsoft 문서도 TEXT 함수를 숫자를 글자로 바꿔 글·기호와 합치는 용도로 안내합니다. 이어 붙인 결과에는 셀에 보이던 표시 형식(쉼표, % 등)이 따라오지 않고 저장된 값이 붙기 때문입니다. 날짜는 일련번호 숫자로 나올 수 있어 특히 주의합니다.
="합계: "&TEXT(1234500,"#,##0")&"원"
결과: 합계: 1,234,500원
="기준일 "&TEXT(DATE(2026,11,4),"yyyy-mm-dd")
결과: 기준일 2026-11-04
서식 문자열("#,##0", "yyyy-mm-dd")은 사용 중인 지역·언어 설정에 따라 다르게 해석될 수 있습니다. 결과가 다르면 설정을 확인합니다. 날짜가 입력하자마자 다른 값으로 바뀌는 문제는 숫자가 날짜로 바뀔 때 막는 방법에서 정리했습니다.
한 칸 안에서 줄을 나눠 보여 주려면 구분자에 CHAR(10)을 넣습니다. CHAR 함수는 코드 번호에 해당하는 문자를 돌려주는 함수이며, 10은 줄 바꿈 문자입니다.
=TEXTJOIN(CHAR(10),TRUE,A2:A4)
결과: 김민수·이서연·박지훈이 세 줄로 나뉘어 들어갑니다. 단, 셀의 줄 바꿈 표시 옵션이 꺼져 있으면 한 줄로 보이니 옵션을 켜서 확인합니다.
결과가 이상하거나 오류가 날 때
대부분은 구분자 따옴표 누락, 지원하지 않는 버전, 빈 칸 처리 설정, 글자 수 한도 중 하나가 원인입니다. 아래 순서로 확인합니다.
| 증상 | 원인 | 확인 방법 |
|---|---|---|
| #NAME? 오류 | 함수명 오타, 구분자를 큰따옴표로 묶지 않음, 또는 TEXTJOIN·CONCAT을 지원하지 않는 버전 | 철자와 따옴표를 확인하고, 사용 중인 엑셀이 Office 2019 이후 또는 Microsoft 365인지 확인 |
| #VALUE! 오류 | 결과 글자 수가 셀 한도 32,767자를 넘음(TEXTJOIN·CONCAT 문서에 모두 명시) | 범위를 줄이거나 여러 셀로 나눠 붙임 |
구분자가 연달아 나옴(///) | ignore_empty가 FALSE | 두 번째 인수를 TRUE로 변경 |
| 끝에 구분자가 하나 더 붙음 | 범위 끝 칸이 비어 있고 FALSE로 지정 | TRUE로 바꾸거나 범위에서 빈 칸 제외 |
| 빈 것처럼 보이는데 구분자가 붙음 | 스페이스 등 공백 문자가 들어 있어 빈 셀이 아님 | 해당 칸을 직접 열어 공백 확인 후 삭제 |
| 날짜가 5자리 숫자로 나옴 | 날짜의 저장값(일련번호)이 붙음 | TEXT(셀,"yyyy-mm-dd")로 감싸기 |
| 구분자 인수에서 인수 개수 오류 | 지역 설정에 따라 인수 구분자가 쉼표 대신 세미콜론인 환경 | 쉼표 대신 세미콜론(;)으로 입력해 보기 |
정리하면, 구분자를 넣어 칸을 여러 개 합칠 때는 =TEXTJOIN(구분자,TRUE,범위), 구분자 없이 붙일 때는 =CONCAT(범위)가 기본입니다. 두세 칸만 이을 때는 & 연산자로도 충분합니다.