EXCEL VBA

[ 엑셀 VBA ] VBA 사용자 정의 함수 : 문자열에서 숫자만 추출

카루루1007 2024. 11. 3. 23:42
728x90
반응형

지난 블로그에서 문자열에서 숫자를 추출하는 함수식을 소개했었습니다.

※ 문자열에서 숫자 추출 : 숫자만 추출하기

 

이 함수식과 유사한 기능을 하도록

VBA를 사용해 사용자 정의함수를 만들어 사용하면

더욱 편리하게 사용할 수 있습니다.

 

지난 블로그에서 작성한 예시처럼

정제되지 않은 문자열에서 숫자를 추출할 수도 있고,

전화번호에서 숫자를 추출하거나,

제품 코드에서 숫자 부분만 필요할 때

상황에 맞게 활용할 수 있습니다.

 

 전체 코드

 

Function ExtractNumbers(txt As String) As Long
    Dim i As Integer
    Dim result As String
    result = ""

    For i = 1 To Len(txt)
        If Mid(txt, i, 1) Like "[0-9]" Then
            result = result & Mid(txt, i, 1)
        End If
    Next i

    ExtractNumbers = result
End Function

 

 코드설명

 

함수의 기본 구조는 문자열(String)을 입력받아 숫자(Long)를 반환합니다.

Function ExtractNumbers(txt As String) As Long

 

그다음 추출된 숫자를 저장할 변수 result를 빈 문자열로 초기화합니다.

result = ""

 

그다음 문자열의 개수를 Len() 함수를 사용해 알아낸 다음

Mid(tex, i, 1)로 한 글자씩 추출하고

Like "[0-9]"로 그 글자가 숫자인지 확인합니다.

숫자라면 result 변수에 추가해 줍니다.

For i = 1 To Len(txt)
    If Mid(txt, i, 1) Like "[0-9]" Then
        result = result & Mid(txt, i, 1)
    End If
Next i

 

숫자인지 확인하는 부분은 아래와 같이 작성해도 동일하게 동작합니다.

If Mid(txt, i, 1) Like "#" Then

 

Like 연산자의 설명은 아래 링크를 참고하세요

※ [EXCEL VBA] - 엑셀 VBA 문자열 비교 하는 방법, Like 연산자 사용하기

 

마지막으로 추출된 숫자를 반환합니다.

ExtractNumbers = result

여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.

엑셀 공부하기
VBA 공부하기

 

728x90
반응형