이 페이지에서
구문
= ExtractNumber ( 텍스트, [시작지점], [종료지점] )
인수구분
설명
텍스트
필수
숫자를 추출할 값이 적힌 셀 또는 문자열입니다.
시작지점
선택
문자열에서 숫자를 추출할 시작 위치입니다. 기본값은 1 입니다.
예를 들어 '5'를 입력할 경우 문자열의 5번째 글자부터 숫자 추출을 시작합니다.
종료지점
선택
숫자 추출을 종료할 위치입니다. 기본값은 32,767 입니다.
예를 들어 '10'을 입력할 경우 문자열의 10번째 글자까지만 참조하여 숫자를 추출합니다.
마스터 코드
복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요'###############################################################
'오빠두엑셀 VBA 사용자지정함수 ([https://www.oppadu.com](https://www.oppadu.com/))
'■ ExtractNumber 함수
'■ 텍스트에서 숫자만 추출합니다. 추출 시작 및 종료위치를 지정할 수 있습니다.
'■ 인수 설명
'_____________Val : 숫자만 추출할 텍스트 또는 셀입니다.
'__________iStart : 추출을 시작할 위치입니다. 기본값은 1 입니다.
'___________iEndl : 추출을 종료할 위치입니다. 기본값은 32767 입니다.
'###############################################################
Function ExtractNumber(Val, Optional iStart, Optional iEnd) As String
Dim i As Long
Dim Str As String
Dim match As Variant
If IsMissing(iStart) Then iStart = 0
If IsMissing(iEnd) Then iEnd = 32767
If iEnd <= 0 Or Not IsNumeric(iEnd) Then iEnd = 32767
If iStart <= 0 Or Not IsNumeric(iStart) Then iStart = 1
If iStart > iEnd Then ExtractNumber = CVErr(errvalue)
If IsObject(Val) Then Str = Val.Value Else Str = Val
Str = Mid(Str, iStart, iEnd - iStart + 1)
With CreateObject("VBScript.RegExp")
.Pattern = "\d+"
.Global = True
Set match = .Execute(Str)
If match.Count > 0 Then
ExtractNumber = ""
For i = 0 To match.Count - 1
ExtractNumber = ExtractNumber & match(i)
Next i
End If
End With
End Function
활용 예제
기본 사용 — 문자열 전체에서 숫자 추출
= ExtractNumber ( "ABC123Z" )
'// '123' 을 반환합니다.
추출 시작·종료 지점 지정
= ExtractNumber ( "1AD34-515", 7 )
'// '515' 를 반환합니다.
= ExtractNumber ( "1세대-아이폰3S-블랙X13", 4, 8)
'// '3' 을 반환합니다.
안내사항
시작지점이 종료지점보다 크면 #VALUE! 오류를 반환합니다.
시작지점·종료지점 값이 숫자가 아니거나 0 이하이면 기본값(1·32,767)으로 처리되며, 문자열의 줄바꿈은 무시되고 한 줄로 추출됩니다.
'갤럭시 1.2버전'에서 '1.2버'까지 추출이 됩니다.
숫자 다음 첫문자까지 추출이 되는데, 뭘 고쳐야 할지 모르겠습니다.
바쁘실텐데 죄송합니다.
위 공식을 사용하면 "갤럭시 1.2버전" -> 12 가 추출됩니다. :)
다시 확인해보시겠어요?^^ 감사합니다.
패턴을
"(\d+)(?:\.(\d{1,2}))?"
로 바꿔서 사용해보시겠어요?감사합니다.
공백도 포함해서 합하고자 합니다. 가능한가요?
여러가지 방법이 있겠으나, M365를 사용중이시라면 TEXTSPLIT 함수를 사용해보세요.
만약 그렇지 않다면 홈페이지에서 제공하는 textsplit 함수 추가기능으로 공백 기준 숫자를 나눈 후
SUM 함수로 합계를 구해보시길 바랍니다.
이 함수는 VBA 사용자 함수입니다.
따라서 매크로 편집기에 코드를 등록한 후 사용할 수 있습니다.
감사합니다.