목차
이 자습서에서는 기본 수식과 사용자 지정 함수를 사용하여 Excel에서 텍스트와 숫자를 구분하는 방법을 알려줍니다. 또한 텍스트와 숫자를 두 개의 개별 열로 나누는 방법도 배웁니다.
이것을 상상해 보십시오. 분석을 위해 원시 데이터를 수신하고 한 열에서 숫자가 텍스트와 혼합되어 있음을 알게 됩니다. 대부분의 경우 자세히 살펴보기 위해 별도의 열에 두는 것이 확실히 더 편리할 것입니다.
동종 데이터로 작업하는 경우 LEFT, RIGHT 및 MID 함수를 사용하여 같은 위치에서 같은 수의 문자. 그러나 그것은 실험실 테스트에 이상적인 시나리오입니다. 실생활에서 숫자가 텍스트 앞, 텍스트 뒤 또는 텍스트 사이에 오는 서로 다른 데이터를 다룰 가능성이 가장 높습니다. 아래 예는 이 경우에 정확히 솔루션을 제공합니다.
Excel 셀에서 텍스트를 제거하고 숫자를 유지하는 방법
해당 솔루션은 Excel 365, Excel 2021에서 작동합니다. 및 Excel 2019
Microsoft Excel 2019는 이전 버전에서 사용할 수 없는 몇 가지 새로운 기능을 도입했으며 이러한 기능 중 하나인 TEXTJOIN을 사용하여 셀에서 텍스트 문자를 제거할 것입니다. 포함하는 숫자입니다.
일반 수식은 다음과 같습니다.
TEXTJOIN("", TRUE, IFERROR(MID( cell, ROW(INDIRECT( "1:"&LEN( cell))), 1) *1, ""))Excel 365 및 2021에서는
TEXTJOIN("", TRUE,IFERROR(MID( cell, SEQUENCE(LEN( cell)), 1) *1, ""))첫눈에 수식은 약간 위협적으로 보일 수 있습니다. 하지만 작동합니다 :)
예를 들어 A2의 숫자에서 텍스트를 제거하려면 B2에 아래 수식 중 하나를 입력한 다음 필요한 만큼 셀에 복사합니다.
Excel 365 - 2019:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2))), 1) *1, ""))
Excel 2019에서는 Ctrl + Shift + Enter 로 배열 수식으로 입력해야 합니다. 동적 배열 Excel에서는 Enter 키로 완성되는 일반 수식처럼 작동합니다.
Excel 365 및 2021에서:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))
결과적으로 모든 텍스트 문자는 셀에서 제거되고 숫자가 유지됨:
이 공식 작동 방식:
논리를 더 잘 이해하기 위해 조사를 시작하겠습니다. 내부 공식:
ROW(INDIRECT("1:"&LEN(string))) 또는 SEQUENCE(LEN(string)) 중 하나를 사용하여 총 숫자에 해당하는 숫자의 시퀀스를 만듭니다. 소스 문자열의 문자 수를 입력한 다음 이러한 일련 번호를 MID 함수에 시작 번호로 공급합니다. B2에서 수식의 이 부분은 다음과 같습니다.
MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)
MID 함수는 A2에서 첫 번째 문자부터 각 문자를 추출하여 배열로 반환합니다.
{"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
이 배열에 1을 곱합니다. 숫자 값은 변경 없이 유지되는 반면 숫자가 아닌 문자를 곱하면 #VALUE! error:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
IFERROR 함수는 다음을 처리합니다.이러한 오류를 제거하고 빈 문자열로 바꿉니다.
{2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}
이 마지막 배열은 배열의 비어 있지 않은 값을 연결하는 TEXTJOIN 함수에 제공됩니다( ignore_empty 인수가 TRUE로 설정됨) 구분 기호로 빈 문자열("") 사용:
TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})
팁. Excel 2016 - 2007의 경우 솔루션도 존재하지만 공식이 훨씬 더 복잡합니다. 이 자습서에서 찾을 수 있습니다: Excel에서 숫자를 추출하는 방법.
숫자에서 텍스트를 제거하는 사용자 지정 기능
이 솔루션은 모든 Excel 버전에서 작동합니다.
이전 버전의 Excel을 사용 중이거나 위 수식도 찾는 경우 기억하기 어렵지만 RemoveText 와 같이 더 간단한 구문과 사용자에게 친숙한 이름으로 자신만의 함수를 만드는 데 방해가 되는 것은 없습니다. 사용자 정의 함수(UDF)는 두 가지 방법으로 작성할 수 있습니다.
VBA 코드 1:
여기서 소스 문자열의 각 문자를 하나씩 살펴봅니다. 숫자인지 아닌지 확인하십시오. 숫자인 경우 문자가 결과 문자열에 추가됩니다.
Function RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i , 1)) 그러면 sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End FunctionVBA code 2:
이 코드는 정규식을 처리하기 위한 객체를 생성합니다. RegExp를 사용하여 소스 문자열에서 숫자 0-9 이외의 모든 문자를 제거합니다.
Function RemoveText(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) End With End Function작은 워크시트에서는 두 코드 모두 동일하게 잘 수행됩니다. 함수가 수백 또는 수천 번 호출되는 큰 워크시트에서는 VBScript.RegExp를 사용하는 코드 2가 더 빠르게 작동합니다.
통합 문서에 코드를 삽입하는 자세한 단계는 VBA 삽입 방법에서 찾을 수 있습니다. Excel의 코드.
어떤 방법을 선택하든 최종 사용자 관점에서 텍스트를 삭제하고 숫자를 남기는 기능은 다음과 같이 간단합니다.
RemoveText(string)예를 들어, 셀 A2에서 숫자가 아닌 문자를 제거하면 B2의 수식은 다음과 같습니다.
=RemoveText(A2)
열 아래로 복사하면 다음과 같은 결과가 나타납니다.
참고. 기본 수식과 사용자 지정 함수는 모두 숫자 문자열 을 출력합니다. 이를 숫자로 바꾸려면 결과에 1을 곱하거나 0을 더하거나 VALUE 함수에서 수식을 래핑합니다. 예:
=RemoveText(A2) + 0
=VALUE(RemoveText(A2))
Excel
의 텍스트 문자열에서 숫자를 제거하는 방법이 솔루션은 Excel 365, Excel 2021 및 Excel에서 작동합니다. 2019
영숫자 문자열에서 숫자를 제거하는 수식은 이전 예에서 설명한 것과 거의 유사합니다.
For Excel 365 - 2019:
TEXTJOIN(" ", 참, IF(ISERR(MID( 셀 , ROW(INDIRECT("1:"&LEN( 셀 ) )), 1) *1), MID( 셀 , ROW(INDIRECT("1:"&LEN( cell ))), 1), ""))Excel 2019에서는 Ctrl + Shift + Enter 키를 함께 눌러 배열 수식 으로 만드는 것을 잊지 마세요.
Excel 365 및 2021의 경우:
TEXTJOIN("", TRUE, IF(ISERROR(MID( cell , SEQUENCE(LEN( cell 1) *1), MID ( cell , SEQUENCE(LEN( cell )), 1), ""))예를 들어 A2의 문자열에서 숫자를 제거하려면 공식은 다음과 같습니다.
=TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))
또는
=TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))
결과적으로 모든 숫자가 셀에서 제거되고 텍스트 문자는 유지됩니다.
위의 스크린샷과 같이 수식은 문자열의 시작, 끝, 중간에 있는 모든 위치에서 숫자 문자를 제거합니다. 숫자 뒤에 공백이 있는 으로 시작하면 해당 공백이 유지되므로 선행 공백 문제가 발생합니다(예: B2).
텍스트 앞에 추가 공백을 제거하려면 다음과 같이 TRIM 함수에 수식을 래핑합니다.
=TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))
이제 결과가 완벽합니다!
이 공식의 작동 방식:
본질적으로 수식은 이전 예에서 설명한 것과 동일하게 작동합니다. 차이점은 TEXTJOIN 함수에 제공된 최종 배열에서 텍스트가 아닌 숫자를 제거해야 한다는 것입니다. 이를 위해 IF와 ISERROR 함수의 조합을 사용합니다.
기억하시겠지만,MID(…)+0은 숫자 배열을 생성하고 #VALUE! 동일한 위치에 있는 텍스트 문자를 나타내는 오류:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
ISERROR 함수는 오류를 포착하고 결과 부울 값 배열을 IF:
{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}
{"";"";"";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
이 최종 배열은 TEXTJOIN으로 전달되므로 텍스트 문자를 연결하고 다음을 출력합니다. 결과.
텍스트에서 숫자를 제거하는 사용자 지정 기능
이 솔루션은 모든 Excel 버전에서 작동합니다.
강력한 수식이 유지되어야 함을 명심하십시오. 간단하게 숫자 문자를 제거하는 사용자 정의 함수(UDF)의 코드를 공유하겠습니다.
VBA 코드 1:
Function RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End FunctionVBA code 2:
Function RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End FunctionRemoveText 함수의 경우와 마찬가지로 두 번째 코드는 다음에서 사용하는 것이 좋습니다. 크기가 큰워크시트를 사용하여 성능을 최적화합니다.
코드가 통합 문서에 추가되면 다음 사용자 지정 함수를 사용하여 셀에서 모든 숫자를 제거할 수 있습니다.
RemoveNumbers(string)이 경우 B2의 수식은 다음과 같습니다.
=RemoveNumbers(A2)
앞 공백이 있는 경우 트리밍하려면 기본 수식과 마찬가지로 TRIM 내부에 사용자 지정 함수를 중첩합니다.
=TRIM(RemoveNumbers(A2))
숫자와 텍스트를 별도의 열로 나누기
텍스트와 숫자를 두 개의 열로 구분하고 싶은 상황에서 단일 수식으로 작업을 수행하는 것이 좋습니다. , 동의하다? 이를 위해 RemoveText 및 RemoveNumbers 함수의 코드를 SplitTextNumbers 또는 단순히 Split 라는 하나의 함수로 병합합니다. 원하는 대로 :)
VBA 코드 1:
기능 SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Then sNum = sNum & sCurChar Else sText = sText & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End FunctionVBA 코드 2:
Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String CreateObject 사용( "VBScript.RegExp" ) .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Else.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function새 사용자 지정 함수에는 두 개의 인수가 필요합니다.
SplitTextNumbers(string, is_remove_text)Where is_remove_text 는 제거할 문자를 나타내는 부울 값입니다.
- TRUE 또는 1 - 텍스트를 제거하고 숫자를 유지합니다.
- FALSE 또는 0 - 숫자를 제거하고 텍스트를 유지합니다.
샘플 데이터세트의 수식은 다음 형식을 취합니다.
숫자가 아닌 문자를 제거하려면:
=SplitTextNumbers(A2, TRUE)
숫자를 삭제하려면 :
=SplitTextNumbers(A2, FALSE)
팁. 선행 공백의 잠재적인 문제를 방지하려면 TRIM 함수에서 숫자를 제거하는 수식을 항상 래핑하는 것이 좋습니다.
=TRIM(SplitTextNumbers(A2, FALSE))
숫자 또는 텍스트를 제거하는 특수 도구
불필요하게 복잡하게 만드는 것과는 달리 Excel에서 텍스트나 숫자를 제거하는 우리만의 방법을 보여드리겠습니다.
Ultimate Suite가 Excel 리본에 추가되었다고 가정하고 다음과 같이 하세요.
- Ablebits 데이터 탭의 텍스트 그룹에서 제거 > 문자 제거 를 클릭합니다.
팁. 결과에 일부 선행 공백이 포함된 경우 Trim Spaces도구는 즉시 제거합니다.
Excel에서 문자열에서 텍스트 또는 숫자를 제거하는 방법입니다. 읽어 주셔서 감사합니다. 다음 주 블로그에서 뵙겠습니다!
사용 가능한 다운로드
Excel에서 텍스트 또는 숫자 제거 - 예(.xlsm 파일)
Ultimate Suite - 평가판(.exe 파일)