엑셀 텍스트에서 숫자 추출하는 7가지 완벽 방법 | TEXTJOIN, MID, ROW 함수 총정리

엑셀 텍스트에서 숫자 추출하는 7가지 완벽 방법 | TEXTJOIN, MID, ROW 함수 총정리
엑셀 텍스트에서 숫자 추출하는 7가지 완벽 방법 | TEXTJOIN, MID, ROW 함수 총정리

엑셀에서 텍스트와 숫자가 혼재된 셀에서 숫자만 추출하는 작업은 데이터 분석과 정리에서 매우 중요한 과정입니다. 다양한 함수 조합을 통해 불규칙한 길이의 텍스트에서도 원하는 숫자를 정확하게 추출할 수 있으며, 이러한 기술을 숙달하면 업무 효율성을 크게 향상시킬 수 있습니다. 이 글에서는 TEXTJOIN, MID, ROW, INDIRECT, ISNUMBER 등의 핵심 함수들을 활용한 7가지 실무 방법을 상세히 알아보겠습니다.

TEXTJOIN 함수 기본 개념과 숫자 추출 원리

TEXTJOIN 함수는 엑셀 2019 이상 또는 마이크로소프트 365에서 사용 가능한 강력한 텍스트 결합 함수입니다. 이 함수의 가장 큰 장점은 여러 텍스트나 배열 요소를 하나로 결합할 때 빈 값을 자동으로 무시할 수 있다는 점입니다. 숫자 추출에서 TEXTJOIN 함수는 배열 내에서 숫자 문자만 선별하여 결합하는 핵심 역할을 담당합니다. 함수의 기본 구문은 TEXTJOIN(구분기호, 빈값무시여부, 텍스트1, 텍스트2…)이며, 첫 번째 인수인 구분기호를 빈 문자열로 설정하면 모든 요소가 공백 없이 연결됩니다. 마이크로소프트 공식 TEXTJOIN 함수 문서에서 더 자세한 정보를 확인할 수 있습니다.

MID, ROW, INDIRECT 함수 조합으로 문자별 분석하기

텍스트에서 숫자를 추출하는 핵심 메커니즘은 각 문자를 개별적으로 분석하여 숫자인지 판별하는 것입니다. 이를 위해 MID 함수로 텍스트의 각 위치에서 한 글자씩 추출하고, ROW와 INDIRECT 함수 조합으로 동적 배열을 생성합니다. ROW(INDIRECT(“1:”&LEN(셀참조))) 공식은 텍스트 길이만큼의 연속된 숫자 배열을 만들어 MID 함수의 위치 인수로 활용됩니다. 예를 들어 “EXCEL3″이라는 텍스트가 있다면, LEN 함수가 6을 반환하고 ROW(INDIRECT(“1:6”))이 {1;2;3;4;5;6} 배열을 생성합니다. 이 배열을 MID 함수와 결합하면 각 위치의 문자 {“E”;”X”;”C”;”E”;”L”;”3″}을 순차적으로 추출할 수 있습니다.

  • ROW 함수는 지정된 범위의 행 번호를 배열로 반환하는 핵심 함수입니다
  • INDIRECT 함수는 문자열 형태의 참조를 실제 셀 참조로 변환하는 역할을 합니다
  • MID 함수는 지정된 위치에서 원하는 길이만큼 문자를 추출하는 기능을 제공합니다
  • LEN 함수는 텍스트의 전체 길이를 측정하여 동적 범위를 설정하는 데 사용됩니다

ISNUMBER 함수로 숫자 판별 및 필터링 방법

추출된 각 문자가 숫자인지 판별하는 것은 ISNUMBER 함수의 핵심 기능입니다. 이 함수는 입력값이 숫자이면 TRUE를, 숫자가 아니면 FALSE를 반환합니다. 하지만 MID 함수로 추출된 문자는 텍스트 형태이므로, 이를 숫자로 변환하는 과정이 필요합니다. 가장 일반적인 방법은 문자에 1을 곱하거나 더하기 0을 하는 것입니다. MID 함수 결과에 *1을 적용하면 숫자 문자는 실제 숫자로 변환되고, 문자는 #VALUE! 오류가 발생합니다.

문자 *1 연산 결과 ISNUMBER 판별
“3” 3 TRUE
“E” #VALUE! FALSE
“7” 7 TRUE
” “ #VALUE! FALSE

IF와 IFERROR 함수를 활용한 오류 처리 기법

숫자가 아닌 문자에서 발생하는 #VALUE! 오류를 처리하는 것은 성공적인 숫자 추출의 핵심입니다. IF 함수와 IFERROR 함수는 이러한 오류를 우아하게 처리하는 두 가지 주요 방법을 제공합니다. IF 함수를 사용할 경우 ISNUMBER(MID(셀참조, 위치, 1)*1) 조건을 통해 숫자인 경우에만 해당 문자를 반환하고, 그렇지 않으면 빈 문자열을 반환합니다.

IFERROR 함수는 더욱 간결한 접근 방식을 제공합니다. IFERROR(MID(셀참조, 위치, 1)*1, “”) 공식은 오류가 발생하면 자동으로 빈 문자열로 대체합니다. 두 방법 모두 동일한 결과를 제공하지만, IFERROR가 더 간단하고 읽기 쉬운 코드를 만들어줍니다. DataCamp의 숫자 추출 튜토리얼에서 이러한 함수들의 실제 활용 예시를 확인할 수 있습니다.

완성된 TEXTJOIN 숫자 추출 공식과 실전 활용법

모든 구성 요소를 결합한 최종 공식은 다음과 같습니다: =TEXTJOIN(“”, TRUE, IFERROR(MID(A2, ROW(INDIRECT(“1:”&LEN(A2))), 1)*1, “”)). 이 공식은 A2 셀의 텍스트에서 모든 숫자를 추출하여 하나의 연속된 숫자로 결합합니다. 예를 들어 “ABC123XYZ456″이라는 텍스트에서 “123456”을 추출할 수 있습니다. 공식 입력 시에는 배열 공식으로 인식시키기 위해 Ctrl+Shift+Enter를 누르는 것이 중요합니다.

실전에서는 다양한 변형이 가능합니다. 소수점을 포함한 숫자를 추출하려면 IF(MID(A2, ROW(INDIRECT(“1:”&LEN(A2))), 1)=”.”, “.”, 공식) 조건을 추가할 수 있습니다. 또한 추출된 결과를 완전한 숫자로 변환하려면 전체 공식을 VALUE 함수로 감싸거나 마지막에 *1을 곱하면 됩니다. Trump Excel의 심화 가이드에서 더 다양한 응용 방법을 학습할 수 있습니다.

엑셀 버전별 호환성 및 대체 방법

TEXTJOIN 함수는 엑셀 2019 이상 또는 마이크로소프트 365에서만 사용 가능하므로, 이전 버전 사용자들은 대체 방법이 필요합니다. 엑셀 2016 이하 버전에서는 복잡한 배열 공식을 사용해야 합니다: =SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(–MID(A2, ROW(INDIRECT(“1:”&LEN(A2))), 1))*ROW(INDIRECT(“1:”&LEN(A2))), 0), ROW(INDIRECT(“1:”&LEN(A2))))+1, 1)*10^ROW(INDIRECT(“1:”&LEN(A2)))/10). 이 공식은 TEXTJOIN과 동일한 결과를 제공하지만 훨씬 복잡합니다.

또 다른 대안으로는 VBA 매크로를 사용하는 방법이 있습니다. Function ExtractNumbers(cell As Range) As String와 같은 사용자 정의 함수를 만들어 더 간단하게 숫자를 추출할 수 있습니다. 구글 시트에서는 REGEXEXTRACT(A1, “[0-9]+”) 함수를 사용하여 정규식 기반의 숫자 추출이 가능합니다. Ablebits의 종합 가이드에서 다양한 버전별 해결책을 확인할 수 있습니다.

고급 활용 팁과 성능 최적화 방법

대용량 데이터를 처리할 때는 성능을 고려한 최적화가 중요합니다. INDIRECT 함수는 휘발성 함수(volatile function)이므로 계산 속도가 느려질 수 있습니다. 이런 경우 SEQUENCE 함수(엑셀 365)를 사용하여 ROW(INDIRECT(“1:”&LEN(A2))) 대신 SEQUENCE(1, LEN(A2))를 활용하면 성능을 개선할 수 있습니다. 또한 여러 셀에 동일한 공식을 적용할 때는 상대 참조와 절대 참조를 적절히 조합하여 복사 시 오류를 방지해야 합니다.

실무에서는 숫자 그룹을 분리하거나 특정 패턴의 숫자만 추출하는 고급 기능도 필요할 수 있습니다. 예를 들어 “Tel: 02-123-4567 Fax: 02-987-6543″에서 전화번호와 팩스번호를 개별적으로 추출하려면 FIND나 SEARCH 함수와 조합하여 위치 기반 추출을 사용할 수 있습니다. 정규식을 지원하는 환경에서는 [0-9]{2,4}-[0-9]{3,4}-[0-9]{4} 패턴으로 더 정확한 추출이 가능합니다. 이러한 고급 기법들을 마스터하면 복잡한 데이터 정제 작업도 효율적으로 처리할 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤