엑셀 VBA에서 StrComp 함수는 두 개의 문자열을 비교하여 그 값이 같은지, 다른지, 또는 정렬 순서상 어느 것이 앞서는지를 반환하는 함수입니다.
1. 기본 문법
StrComp(string1, string2, [compare])
|
매개변수
|
설명
|
string1
|
비교할 첫 번째 문자열
|
string2
|
비교할 두 번째 문자열
|
compare (선택)
|
비교 방식 (vbBinaryCompare, vbTextCompare, vbDatabaseCompare)
|
📌 반환값 (정수)
- 0 → 두 문자열이 같음
- -1 → string1이 string2보다 앞에 위치 (작음)
- 1 → string1이 string2보다 뒤에 위치 (큼)
- Null → 비교할 값이 Null이면 Null 반환
2. 비교 방식 (compare 옵션)
compare 값
|
설명
|
vbBinaryCompare (기본값)
|
대소문자 구별 (A ≠ a)
|
vbTextCompare
|
대소문자 무시 (A = a)
|
vbDatabaseCompare
|
데이터베이스 정렬 방식 (Access에서 사용)
|
3. 두 문자열이 같은지 비교 (대소문자 구별)
Sub 문자열_비교_대소문자구별()
Dim 결과 As Integer
결과 = StrComp("Apple", "apple", vbBinaryCompare)
If 결과 = 0 Then
MsgBox "두 문자열이 동일합니다."
Else
MsgBox "두 문자열이 다릅니다."
End If
End Sub
|
📌 대소문자를 구별하므로 "Apple"과 "apple"은 다름 (결과 = -1)
4. 두 문자열이 같은지 비교 (대소문자 무시)
Sub 문자열_비교_대소문자무시()
Dim 결과 As Integer
결과 = StrComp("Excel", "EXCEL", vbTextCompare)
If 결과 = 0 Then
MsgBox "두 문자열이 동일합니다."
Else
MsgBox "두 문자열이 다릅니다."
End If
End Sub
|
📌 대소문자를 무시하므로 "Excel"과 "EXCEL"은 같음 (결과 = 0)
5. 문자열 정렬 순서 비교
Sub 문자열_정렬비교()
Dim 결과 As Integer
결과 = StrComp("Apple", "Banana", vbTextCompare)
If 결과 = 0 Then
MsgBox "두 문자열이 동일합니다."
ElseIf 결과 = -1 Then
MsgBox "Apple이 Banana보다 사전에서 앞에 있습니다."
Else
MsgBox "Apple이 Banana보다 사전에서 뒤에 있습니다."
End If
End Sub
|
📌 "Apple"이 "Banana"보다 사전순으로 앞에 있으므로 결과 = -1
6. 숫자 문자열 비교
Sub 숫자_문자열_비교()
Dim 결과 As Integer
결과 = StrComp("123", "45", vbBinaryCompare)
If 결과 = -1 Then
MsgBox "123이 45보다 사전순으로 앞에 있습니다."
Else
MsgBox "123이 45보다 사전순으로 뒤에 있습니다."
End If
End Sub
|
📌 숫자가 아닌 문자로 비교하므로 "123"이 "45"보다 앞에 위치 (결과 = -1)
7. Null 값이 포함된 경우
Sub Null_값_비교()
Dim 결과 As Variant
결과 = StrComp(Null, "Test", vbTextCompare)
If IsNull(결과) Then
MsgBox "Null 값이 포함되어 비교할 수 없습니다."
End If
End Sub
|
📌 비교할 값이 Null이면 StrComp도 Null을 반환
8. 배열에서 특정 문자열 찾기
Sub 배열_문자열찾기()
Dim 과일 As Variant
과일 = Array("사과", "바나나", "포도", "망고")
Dim i As Integer
For i = LBound(과일) To UBound(과일)
If StrComp(과일(i), "망고", vbTextCompare) = 0 Then
MsgBox "망고를 찾았습니다! 위치: " & i + 1
Exit Sub
End If
Next i
MsgBox "망고가 목록에 없습니다."
End Sub
|
📌 배열에서 "망고"를 찾아 위치를 표시 (배열 인덱스는 0부터 시작, 위치는 1부터 표기)
📌 StrComp 사용 시 주의할 점
- vbBinaryCompare (대소문자 구별)와 vbTextCompare (대소문자 무시)를 올바르게 선택해야 함
- 숫자 비교가 아니라 문자열 비교이므로 "123" vs "45" 비교 시 사전순 정렬 기준 적용
- 비교할 값 중 하나라도 Null이면 StrComp는 Null 반환 (예외 처리 필요)
📝 정리
기능
|
VBA 코드 (StrComp 함수)
|
대소문자 구별 비교
|
StrComp("Apple", "apple", vbBinaryCompare) → 결과 -1
|
대소문자 무시 비교
|
StrComp("Excel", "EXCEL", vbTextCompare) → 결과 0
|
사전순 비교
|
"Apple"이 "Banana"보다 앞 → 결과 = -1
|
숫자 문자열 비교
|
"123" vs "45" → 결과 = -1 (문자열 기준 비교)
|
배열에서 특정 문자열 찾기
|
For i = LBound(배열) To UBound(배열) If StrComp(배열(i), "찾을값", vbTextCompare) = 0 Then ...
|
🔥 VBA의 StrComp를 활용하면 문자열 비교 및 정렬, 데이터 검색이 더 편리해집니다! 🚀