Excel: 텍스트 문자열에서 숫자 추출

  • 이 공유
Michael Brown

수식과 추출 도구를 사용하여 Excel의 다양한 텍스트 문자열에서 숫자를 추출하는 방법을 보여줍니다.

주어진 길이의 텍스트 문자열의 일부를 추출할 때 , Excel은 작업을 신속하게 처리할 수 있도록 세 가지 하위 문자열 함수(Left, Right 및 Mid)를 제공합니다. 영숫자 문자열에서 숫자를 추출할 때 Microsoft Excel은… 서로 중첩됩니다. 또는 추출 도구를 실행하고 마우스 클릭으로 작업을 완료할 수 있습니다. 아래에서 두 가지 방법에 대한 자세한 내용을 확인할 수 있습니다.

    텍스트 문자열 끝에서 숫자를 추출하는 방법

    숫자가 뒤에 오는 영숫자 문자열 열이 있는 경우 텍스트, 다음 수식을 사용하여 가져올 수 있습니다.

    RIGHT( cell, LEN( cell) - MAX(IF(ISNUMBER(MID( cell, ROW(INDIRECT("1:"&LEN())), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN())), 0)))

    공식의 논리에 대해서는 잠시 후에 다루겠습니다. 지금은 단순히 cell 을 원래 문자열을 포함하는 셀에 대한 참조(여기서는 A2)로 바꾸고 같은 행의 빈 셀에 수식을 입력합니다(예: B2:

    <). 0> =RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))

    이 수식은 끝에서부터만 숫자를 가져옵니다. 문자열의 시작 부분이나 중간 부분에도 숫자가 있는 경우무시됨:

    텍스트 함수의 범주에 속하는 RIGHT 함수로 추출을 수행합니다. 이 함수의 출력은 항상 text 입니다. 우리의 경우 결과는 숫자 하위 문자열 이며 Excel에서는 숫자가 아닌 텍스트이기도 합니다.

    결과가 숫자 여야 하는 경우 (추가 계산에 사용할 수 있음) 수식을 VALUE 함수로 래핑하거나 결과를 변경하지 않는 산술 연산(예: 1을 곱하거나 0을 더함)을 수행합니다. 단일 숫자인 경우 IFERROR 함수를 사용하십시오. 예:

    =IFERROR(VALUE(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))), "")

    또는

    =IFERROR(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))) +0, "")

    참고. Dynamic Array Excel(Office 365 및 2021)에서는 Enter 키를 사용하여 일반적인 방식으로 수식을 입력합니다. Excel 2019 및 이전 버전에서는 배열 수식으로만 작동하므로 Ctrl + Shift + Enter를 눌러 완료해야 합니다.

    이 수식이 작동하는 방식:

    영숫자 문자열에서 숫자를 추출하려면 먼저 추출을 시작할 위치를 알아야 합니다. 문자열에서 숫자가 아닌 마지막 문자의 위치는 다음과 같은 까다로운 공식을 사용하여 결정됩니다.

    MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN( A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))

    논리를 이해하기 위해 내부에서 조사해 봅시다. :

    ROW(INDIRECT("1:"&LEN(A2))) 조합소스 문자열(A2)의 총 문자에 해당하는 일련 번호를 생성하고 이러한 일련 번호를 MID에 시작 번호로 제공합니다.

    MID(A2, {1;2;3;4 ;5;6;7;8}, 1)

    MID 함수는 A2에서 각 개별 문자를 가져와 배열로 반환합니다.

    {"0";"5";" -";"E";"C";"-";"0";"1"}

    MID는 텍스트 함수이므로 출력은 항상 텍스트입니다. 따옴표로 묶여 있습니다.) 숫자를 숫자로 바꾸려면 배열에 1을 곱합니다(이중 부정 --MID()는 동일한 효과를 가집니다). 이 연산의 결과는 숫자 배열과 #VALUE! 숫자가 아닌 문자를 나타내는 오류:

    ISNUMBER({0;5;#VALUE!;#VALUE!;#VALUE!;#VALUE!;0;1})

    ISNUMBER 함수 배열의 각 요소를 평가하고 부울 값의 형태로 판정을 내립니다. - 숫자의 경우 TRUE, 그 외의 경우 FALSE:

    {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE}

    이 배열은 IF 함수의 논리적 테스트로 이동합니다. 여기서 배열의 각 요소는 FALSE:

    IF({TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE와 비교됩니다. ;TRUE}=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)

    각 FALSE(숫자가 아닌 값)에 대해 다른 ROW(INDIRECT()) 함수는 다음을 반환합니다. 문자열에서 상대 위치. 각 TRUE(숫자 값)에 대해 0이 반환됩니다. 결과 배열은 다음과 같습니다.다음과 같습니다.

    {0;0;3;4;5;6;0;0}

    나머지는 쉽습니다. MAX 함수는 문자열에서 숫자가 아닌 마지막 값의 위치인 위의 배열에서 가장 높은 숫자를 찾습니다(이 경우 6). 간단히 LEN이 반환한 문자열의 총 길이에서 해당 위치를 빼고 그 결과를 RIGHT에 전달하여 문자열의 오른쪽에서 추출할 문자 수를 알려줍니다.

    RIGHT(A2, LEN (A2) - 6)

    완료!

    텍스트 문자열의 시작 부분에서 숫자를 추출하는 방법

    숫자 다음에 텍스트가 나타나는 레코드로 작업하는 경우 다음을 수행할 수 있습니다. 일반 수식

    LEFT( cell, MATCH(FALSE, ISNUMBER(MID( cell, ROW(INDIRECT("1: "&LEN( cell)+1)), 1) *1), 0) -1)

    A2의 원래 문자열을 사용하여 다음 수식을 사용하여 숫자를 가져옵니다.

    =LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1)), 1) *1), 0) -1)

    가운데나 끝에 있는 숫자가 몇 개인지 상관없이 시작 번호만 추출됩니다.

    참고. Excel 365 및 Excel 2021에서는 동적 배열 지원으로 인해 일반 수식이 제대로 작동합니다. Excel 2019 및 이전 버전에서는 Ctrl + Shift + Enter를 눌러 명시적으로 배열 수식 으로 만들어야 합니다.

    이 수식이 작동하는 방식:

    여기서 다시 ROW, INDIRECT 및 LEN 함수의 조합을 사용하여 소스 문자열의 전체 문자에 1을 더한 것과 같은 일련의 숫자를 생성합니다(해당 역할은추가 문자는 나중에 명확해집니다).

    ROW(INDIRECT("1:"&LEN(A2)+1))

    MID 및 ISNUMBER는 이전 예 - MID는 개별 문자를 가져오고 ISNUMBER는 이를 논리 값으로 변환합니다. TRUE's 및 FALSE's의 결과 배열은 조회 배열로 MATCH 함수로 이동합니다. 3>

    MATCH는 첫 번째 FALSE의 상대 위치를 계산하여 문자열에서 숫자가 아닌 첫 번째 문자의 위치를 ​​제공합니다(A2의 3). 앞의 숫자를 추출하기 위해 첫 번째 텍스트 문자 위치에서 1을 빼고 그 차이를 LEFT 함수의 num_chars 인수에 제공합니다.

    LEFT(A2, 3-1)

    이제 ROW(INDIRECT()+1))에 의해 생성된 시퀀스의 "추가" 문자로 돌아갑니다. 이미 알고 있듯이 이 시퀀스는 MID 기능의 시작점을 제공합니다. +1이 없으면 MID는 원래 문자열에 있는 만큼의 문자를 정확히 추출합니다. 문자열에 숫자만 포함된 경우 ISNUMBER는 TRUE만 반환하고 MATCH는 하나 이상의 FALSE가 필요합니다. 이를 확인하기 위해 MID 함수가 빈 문자열로 변환하는 문자열의 전체 길이에 문자를 하나 더 추가합니다. 예를 들어 B7에서 MID는 다음 배열을 반환합니다.

    {"1";"2";"3";"4";""}

    참고. RIGHT 함수의 경우와 마찬가지로 LEFT도 숫자를 반환합니다.substring 은 기술적으로 숫자가 아니라 텍스트입니다. 숫자 문자열이 아닌 숫자로 결과를 얻으려면 VALUE 함수에 수식을 중첩하거나 첫 번째 예와 같이 결과에 1을 곱합니다.

    문자열의 모든 위치에서 숫자를 얻는 방법

    작업에 문자열의 모든 위치에서 숫자를 추출해야 하는 경우 MrExcel 포럼에 게시된 다음과 같은 놀라운 공식을 사용할 수 있습니다.

    =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)

    여기서 A2는 원본 텍스트 문자열입니다.

    이 수식을 분석하려면 별도의 기사가 필요하므로 워크시트에 복사하기만 하면 실제로 작동하는지 확인할 수 있습니다 :)

    그러나 결과를 검토하면 한 가지 사소한 단점을 발견할 수 있습니다. 소스 문자열에 숫자가 포함되어 있지 않으면 위 스크린샷의 6행에서와 같이 수식이 0을 반환합니다. 이 문제를 해결하려면 소스 문자열에 숫자가 포함되어 있는지 확인하는 논리 테스트인 IF 문에 수식을 래핑할 수 있습니다. 그렇다면 수식은 숫자를 추출하고, 그렇지 않으면 빈 문자열을 반환합니다.

    =IF(SUM(LEN(A2)-LEN(SUBSTITUTE(A2, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, 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),"")

    아래 스크린샷에 표시된 것처럼 개선된 수식이 아름답게 작동합니다(Excel 전문가인 Alex에게 찬사를 보냅니다. ):

    이전의 모든 예와 달리 이 수식의 결과는 숫자 입니다. 이를 확인하려면 열 B의 오른쪽 정렬 값과 잘린 선행 0을 확인하십시오.

    팁. 엑셀 365에서 -Excel 2019에는 TEXTJOIN 기능을 사용하여 훨씬 간단한 솔루션이 있습니다. 텍스트를 제거하고 숫자를 유지하는 방법을 참조하세요.

    Ultimate Suite를 사용하여 텍스트 문자열에서 숫자 추출

    방금 본 것처럼 텍스트 문자열에서 숫자를 가져오는 사소한 Excel 공식은 없습니다. 수식을 이해하거나 데이터 세트에 맞게 조정하는 데 어려움이 있는 경우 Excel의 문자열에서 숫자를 가져오는 이 간단한 방법이 마음에 드실 것입니다.

    Excel 리본에 Ultimate Suite를 추가하면 다음과 같은 방법이 있습니다. 영숫자 문자열에서 숫자를 빠르게 검색할 수 있습니다.

    1. Ablebits Data 탭 > 텍스트 그룹으로 이동하여 추출 을 클릭합니다. :

    2. 소스 문자열이 있는 모든 셀을 선택합니다.
    3. 추출 도구 창에서 번호 추출 라디오 버튼을 선택합니다.
    4. 결과가 수식인지 값인지 여부에 따라 수식으로 삽입 상자를 선택하거나 선택하지 않은 상태로 둡니다(기본값).

      소스 문자열이 변경되는 즉시 추출된 숫자가 자동으로 업데이트되도록 하려면 이 상자를 선택하는 것이 좋습니다. 결과가 원래 문자열과 독립적이기를 원하는 경우(예: 나중에 소스 데이터를 제거하려는 경우) 이 상자를 선택하지 마십시오.

    5. 결과 삽입 버튼을 클릭합니다. 완료!

    이전 예와 마찬가지로추출은 숫자 입니다. 즉, 계산, 합계, 평균 또는 다른 계산을 자유롭게 수행할 수 있습니다.

    이 예에서는 결과를 <9로 삽입하도록 선택했습니다>values , 그리고 추가 기능은 요청된 대로 정확히 수행했습니다.

    수식으로 삽입 확인란을 선택한 경우 ' d 수식 입력줄에서 수식 을 관찰합니다. 어느 것이 궁금하십니까? Ultimate Suite 평가판을 다운로드하고 직접 확인하세요 :)

    사용 가능한 다운로드

    Excel 추출 번호 - 샘플 통합 문서(.xlsx 파일)

    Ultimate Suite - 평가판(.exe 파일)

    Michael Brown은 소프트웨어 도구를 사용하여 복잡한 프로세스를 단순화하려는 열정을 가진 열성적인 기술 애호가입니다. 기술 산업에서 10년 이상의 경험을 쌓은 그는 Microsoft Excel 및 Outlook은 물론 Google 스프레드시트 및 문서 도구에 대한 기술을 연마했습니다. Michael의 블로그는 자신의 지식과 전문 지식을 다른 사람과 공유하는 데 전념하며 따라하기 쉬운 팁과 생산성 및 효율성 향상을 위한 자습서를 제공합니다. 노련한 전문가이든 초보자이든 Michael의 블로그는 이러한 필수 소프트웨어 도구를 최대한 활용하기 위한 귀중한 통찰력과 실용적인 조언을 제공합니다.