VBA에서 Like 연산자는 문자열을 비교 또는 패턴을 비교할 때 사용합니다.
패턴 비교를 하기 때문에
와일드카드 문자와 함께 사용됩니다.
와일드카드 문자에 대한 간단한 설명은 아래 링크를 참고하시면 됩니다.
※ 엑셀에서 와일드카드(*, ?, ~) 문자로 데이터 검색하기 / 별표, 물음표, 물결표
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?t는 c로 시작하고 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 연산자를 사용해야 합니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
[ 엑셀 VBA ] 사용자 정의함수 등록하고 다른 엑셀 파일에서 호출하기 (6) | 2024.11.04 |
---|---|
[ 엑셀 VBA ] VBA 사용자 정의 함수 : 문자열에서 숫자만 추출 (5) | 2024.11.03 |
[ 엑셀 VBA ] VBA로 ChromeDriver(크롬드라이버) 압축파일 다운받기, VBA로 파일 다운로드 하기 (2) | 2024.10.29 |
[ 엑셀 VBA ] 내 크롬 브라우저의 버전에 맞는 최신 ChromeDriver 버전 VBA로 확인하기 (2) | 2024.10.28 |
[ 엑셀 VBA ] 크롬 브라우저 버전 정보 확인하기 (0) | 2024.10.28 |