EXCEL VBA

엑셀 VBA 문자열 비교 하는 방법, Like 연산자 사용하기

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

VBA에서 Like 연산자문자열을 비교 또는 패턴을 비교할 때 사용합니다.

 

패턴 비교를 하기 때문에 

와일드카드 문자와 함께 사용됩니다.

 

와일드카드 문자에 대한 간단한 설명은 아래 링크를 참고하시면 됩니다.

※ 엑셀에서 와일드카드(*, ?, ~) 문자로 데이터 검색하기 / 별표, 물음표, 물결표

 

728x90

 Like 연산자에서 사용되는 와일드카드 문자

 

pattern의 문자 string의 항목과 일치
? 단일 문자
* 0개 이상의 문자
# 모든 한 자리(0-9)
[charlist] charlist의 단일 문자
[!charlist] charlist에 없는 모든 단일 문자

 

 간단한 예시 코드

 

몇 가지 예시를 보면 어떻게 사용하는 지 쉽게 아실 수 있습니다.

 

먼저 기본적으로 Like 연산자대소문자를 구분합니다.

Sub test()
    Dim result As Boolean
    result = "Cat" Like "cAt"
    
    Debug.Print result
End Sub

 

아래 코드는 cat 이라는 문자열c?t 라는 패턴과 일치하는지 확인합니다.

결과로 True를 반환합니다.

c?tc로 시작하고 t로 끝나며

그 사이에는 아무 단일 문자가 있어도 된다는 의미입니다.
Sub test()
    Dim result As Boolean
    result = "cat" Like "c?t"
    
    Debug.Print result
End Sub

 

다음 False를 반환합니다.

c??t
c로 시작하고 t로 끝나면서
그 사이에 아무 문자가 두 개 있으면 된다는 의미입니다.
Sub test()
    Dim result As Boolean
    result = "cat" Like "c??t"
    
    Debug.Print result
End Sub

 

다음은 a로 시작하는 모든 문자열인지 검사하는 코드입니다.

a* 의 형태로 사용합니다.
apple라는 문자열은 a로 시작하고 *는 0개 이상의 문자열을 의미하므로
a뒤에 몇 개의 문자가 와도 되며, 그 문자가 어느 것이어도 상관이 없습니다.
Sub test()
    Dim result As Boolean
    result = "apple" Like "a*"
    
    Debug.Print result
End Sub

 

아래 코드는 문자열에 a가 포함되었는지 확인합니다.

Sub test()
    Dim result As Boolean
    result = "bat" Like "*a*"
    
    Debug.Print result
End Sub

 

다음은 문자열이 세 자리 숫자에 해당하는지 확인합니다.

Sub test()
    Dim result As Boolean
    result = "123" Like "###"
    
    Debug.Print result
End Sub

 

다만, 아래 코드도 True를 반환합니다.

Sub test()
    Dim result As Boolean
    result = "123" Like "*"
    
    Debug.Print result
End Sub

Sub test()
    Dim result As Boolean
    result = "123" Like "???"
    
    Debug.Print result
End Sub

 

추측을 해보면 #은 숫자를 찾는다기 보다는 

문자열 중에 숫자로 변환이 가능한 것을 찾는 것 같습니다.

 

아래와 같이 사용하면 끝 세 자리가 숫자인 문자열을 찾습니다.

Sub test()
    Dim result As Boolean
    result = "aaa123" Like "*###"
    
    Debug.Print result
End Sub

 

아래 코드는 첫 번째 문자가 c 또는 b로 시작하는지 확인하는 코드입니다.

Sub test()
    Dim result As Boolean
    result = "bat" Like "[cb]at"
    
    Debug.Print result
End Sub

 

아래 코드는 첫 번째 문자가 a가 아닌지 확인하는 코드입니다.

Sub test()
    Dim result As Boolean
    result = "bat" Like "[!a]at"
    
    Debug.Print result
End Sub

 

다음은 첫 글자가 한글로 시작하는 지 확인하는 코드입니다.

첫 글자만 한글로 시작하면 그 뒤로 무엇이 오더라도 True를 반환합니다.

Sub test()
    Dim result As Boolean
    result = "바다aa" Like "[가-힣]*"
    
    Debug.Print result
End Sub

 

반응형

다음은 #을 사용하여 간단하게 전화번호와 날짜 형식을 검사하는 코드입니다.

Sub test()

    Dim result As Boolean
    
    result = "2023-12-31" Like "####-##-##"
    Debug.Print result

    result = "010-1234-5678" Like "010-####-####"
    Debug.Print result
    
End Sub

 

다음은 이메일의 형식을 검사하는 코드입니다.

Sub test()

    Dim result As Boolean
    
    result = "user@example.com" Like "*@*.com"
    Debug.Print result
    
End Sub

 

 참고사항

 

Like 연산자는 기본적으로 단일 문자를 비교한다고 할 수 있습니다.

예를 들어 입력된 모든 문자열이 한글인지 확인하는 것은 

Like 연산자만으로 바로 비교는 어렵고

문자열을 하나하나의 문자로 쪼갠 뒤

Like 연산자를 사용해야 합니다.

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

엑셀 공부하기
VBA 공부하기

728x90
반응형