본문 바로가기

엑셀/VBA

VBA 내장 함수 - InStr, InStrRev

반응형

이전 글에서 Left, Mid, Right 함수에 대해 알아보았으며 엑셀 함수와 VBA 함수의 차이에 대해서도 함께 알아보았습니다. 이번에는 InStr 함수와 InStrRev 함수에 대해 알아보겠습니다.

 

VBA 내장 함수 - Left, Mid, Right 함수

 

VBA 내장 함수 - Left, Mid, Right 함수

이전 글에서 InputBox 함수에 대해 알아보았습니다. 이번에는 VBA 내장 함수중 Left, Mid, Right 함수에 대해 알아보겠습니다. 이 함수들은 엑셀 함수에도 동일한 함수가 있지만 VBA에서 이들 함수들이

mr-johndoe.tistory.com

 

 

 

 

 

1. InStr 함수와 InStrRev 함수

 InStr 함수와 동일한 엑셀 함수는 Find 함수, Search 함수가 있습니다. 이 함수들은 지정된 문자열에서 찾고자 하는 문자 혹은 문자열을 찾아서 그 위치를 알려주는 함수입니다. InStrRev 함수는 찾고자 하는 문자 혹은 문자열을 대상 문자열의 오른쪽부터 찾기 때문에 찾고자 하는 문자 혹은 문자열의 가장 마지막 위치를 찾아줍니다.

 

InStr 함수 사용 방법은 다음과 같습니다.

 

  InStr ( 시작 위치, 찾을 대상인 문자열, 찾으려는 문자 혹은 문자열, 비교 방법)

 

시작 위치 : 찾을 대상인 문자열에서 찾기 시작할 위치를 작성합니다. 생략하면 찾을 대상인 문자열의 왼쪽 문자부터 찾기 시작합니다.

 

찾을 대상인 문자열 : 찾으려는 문자 혹은 문자열의 찾을 대상을 말합니다.

 

찾으려는 문자 혹은 문자열 : 사용자가 찾고자 하는 문자 혹은 문자열을 말합니다.

 

비교 방법 : 문자 혹은 문자열을 찾을 때 비교할 방법을 지정합니다. 인수는 아래 표를 참조하시기 바랍니다.

 

인수 설명
vbUseCompareOption -1 Option Compare 문의 설정을 사용하여 비교
vbBinaryCompare 0 이진값으로 비교(영문 대 소문자 구분), 기본값
vbTextCompare 1 문자 비교 (영문 대 소문자 구분하지 않음)
vbDatabaseCompare 2 데이터베이스 정보에 맞춰 비교

 

InStrRev 함수 사용 방법은 다음과 같습니다.

 

    InStrRev ( 찾을 대상인 문자열, 찾으려는 문자 혹은 문자열, 시작 위치, 비교 방법)

 

InStr 함수 사용 인수 내용과 동일합니다. 하지만 주의하실 점은 시작 위치는 InStr 함수는 왼쪽부터 찾기 시작하지만 InStrRev 함수는 오른쪽부터 찾기 시작합니다.

 

 

 

2. 예제를 통해 InStr 함수와 InStrRev 함수에 대해 확인하기

 엑셀 시트 B2 셀에 '현재 함수에 대해 알아보고 있습니다.이전 글에서 Left, Mid, Right 함수에 대해 알아보았으며 엑셀 함수와 VBA 함수의 차이에 대해서도 함께 알아보았습니다. 이번에는 InStr 함수와 InStrRev 함수에 대해 알아보겠습니다.'라는 문장을 입력하였습니다.

여러분은 원하시는 문장을 넣으셔도 됩니다.

 

이제 엑셀에서 VBE 창을 엽니다. 그리고 Module을 생성하고 Module 코드 창에 아래와 같이 입력합니다.

 

   Option Explicit
   Dim s, r As String

   Public Sub 찾기()
       s = InStr(Range("B2").Value, "함수")
       Range("C2").Value = s
    
       r = InStrRev(Range("B2").Value, "함수")
       Range("C3").Value = r
   End Sub

 

코딩 내용중에서 "함수"부분은 여러분들이 B2 셀에 입력한 문장 중 반복되는 단어 하나를 입력하시면 됩니다.

 

코딩한 내용을 실행하면 C2 셀에 '4', C3 셀에 '119'가 입력됩니다.

 

InStr 함수 결괏값이 4라는 것은 '함수'라는 단어가 처음 발견된 위치는 문장에서 4번째 위치라는 말입니다. 문장의 제일 왼쪽부터 공백을 포함하여 세어보면 4번째인 것을 알 수 있습니다.

 

InStrRev 함수 결과값은 119입니다. 이는 '함수'라는 단어가 가장 마지막에 나온 위치가 119번째라는 말입니다. 이를 세기는 어려워 엑셀 함수 Len을 사용하여 알아보겠습니다.

 

C4 셀에 '=LEN(B2)'라고 입력합니다. 그러면 133이라는 값이 출력됩니다. 이는 B2 셀에 입력 되어진 문장의 문자 개수가 모두 133개라는 의미입니다.

 

이제 문자의 마지막 함수가 나와있는 곳에서 마지막 문장까지 B5 셀에 복사를 합니다. 이때 '함수'의 '수'자도 포함하여 복사합니다. 

 

그리고, 이번에는 C5 셀에 '=LEN(B5)'라고 입력합니다. 그럼 14라는 값이 출력됩니다. 이는 지금 복사한 문자의 개수가 14개라는 의미입니다. 

 

전체 문자 개수에서 지금 복사한 문장의 문자 개수(133-14)를 빼면 119가 나오므로 InStrRev 함수 결괏값과 일치합니다.

 

InStr_InStrRev_함수_예제_결과
[그림 1] InStr 함수와 InStrRev 함수 예제 결과

 

예제를 실행한 결과는 [그림 1]과 같습니다.

 

반응형