Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 함수 InStr 문자열 내에서 특정 문자 또는 문자열 찾기

엑셀(Excel)/VBA
반응형

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

 


 

반응형
Posted by 녹두장군1
,