VBA에서 InStr 함수는 문자열에서 특정 부분 문자열을 찾아 해당 위치(인덱스)를 반환하는 함수로, 문자열 내에서 원하는 패턴의 시작 위치를 확인하는 데 사용합니다. 만약 부분 문자열을 찾지 못하면 0을 반환합니다. 이 함수를 사용하면 문자열에서 특정 패턴을 찾고 해당 패턴이 시작하는 위치를 알 수 있습니다. 아래에서 [InStr] 함수의 개념, 구문, 예제, 실행 결과 및 소스 설명을 설명하겠습니다.
◎ 구문 |
InStr([Start], String1, String2, [Compare])
l [Start]: 선택적 매개변수로, 문자열을 검색할 시작 위치를 나타내는 정수입니다. 기본값은 1로, 문자열의 시작부터 검색을 시작합니다.
l [String1]: 검색 대상 문자열입니다.
l [String2]: 검색할 부분 문자열입니다.
l [Compare]: 선택적 매개변수로, 대/소문자를 구분할지 여부를 나타내는 VbCompareMethod 상수입니다. 기본값은 vbBinaryCompare로 대소문자를 구분합니다.
◎ 예제 1: 문자열에서 부분 문자열 위치 찾기 |
예제에서는 문자열에서 "sample"을 찾아 그 위치를 반환합니다. [InStr] 함수를 사용하여 문자열에서 "sample"을 찾고, 찾은 경우 해당 위치를 표시합니다.
Sub FindSubstringPosition()
Dim originalString As String
originalString = "This is a sample text with 'sample' in it."
Dim position As Integer
position = InStr(originalString, "sample")
If position > 0 Then
MsgBox "'sample'의 위치: " & position, vbInformation, "부분 문자열 위치"
Else
MsgBox "'sample'을 찾을 수 없습니다.", vbExclamation, "부분 문자열 위치"
End If
End Sub
◎ 예제 2: 대소문자 구분 없이 검색 |
예제에서는 대소문자를 구분하지 않고 "CASE-insensitive"을 찾아 위치를 반환합니다. [InStr] 함수의 [Compare] 매개변수를 `vbTextCompare`로 설정하여 대소문자를 구분하지 않고 검색을 수행합니다.
Sub FindCaseInsensitive()
Dim originalString As String
originalString = "This is a case-Insensitive example."
Dim position As Integer
position = InStr(1, originalString, "CASE-insensitive", vbTextCompare)
If position > 0 Then
MsgBox "'CASE-insensitive'의 위치: " & position, vbInformation, "부분 문자열 위치 (대소문자 구분 안 함)"
Else
MsgBox "'CASE-insensitive'을 찾을 수 없습니다.", vbExclamation, "부분 문자열 위치"
End If
End Sub
◎ 예제 3: 시작 위치 지정하여 검색 |
예제에서는 시작 위치를 지정하여 "example"을 찾아 위치를 반환합니다. [InStr] 함수의 [Start] 매개변수를 16로 설정하여 16번째 문자부터 검색을 시작합니다.
Sub FindWithStartPosition()
Dim originalString As String
originalString = "This is an example with multiple examples."
Dim startPosition As Integer
startPosition = 16
Dim position As Integer
position = InStr(startPosition, originalString, "example")
If position > 0 Then
MsgBox "'example'의 위치: " & position, vbInformation, "부분 문자열 위치"
Else
MsgBox "'example'을 찾을 수 없습니다.", vbExclamation, "부분 문자열 위치"
End If
End Sub
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 함수 Str 숫자를 문자열로 변환하기 (0) | 2023.11.24 |
---|---|
엑셀 VBA 함수 CDbl 부동 소수점으로 형변환하기 (2) | 2023.11.24 |
엑셀 VBA 함수 CInt 정수로 형변환하기 (2) | 2023.11.24 |
엑셀 VBA 함수 Date 현재 날짜 반환하기 (0) | 2023.11.22 |
엑셀 VBA 함수 Format 이용해서 날짜, 시간, 숫자 형식 지정하기 (0) | 2023.11.21 |
엑셀 VBA 함수 DateAdd 날짜에 시간, 일 더하거나 빼기 (0) | 2023.11.21 |
엑셀 VBA 함수 Trim 문자열 앞뒤 공백 제거하기 (2) | 2023.11.21 |
엑셀 VBA 함수 Left 문자열의 왼쪽 부분 추출 (1) | 2023.11.20 |