VBA InStrRev | Excel VBA InStrRev 함수를 사용하는 방법?

Excel VBA INSTRREV

VBA INSTRREV 함수는 'In String Reverse'의 약자로 , 우리가 찾고있는 문자열의 끝 (오른쪽에서 왼쪽으로)에서 시작하여 다른 문자열에서 검색 문자열 (하위 문자열)의 첫 번째 발생 위치를 반환합니다. 검색 가능한 문자열입니다.

INSTRREV 함수는 찾아야 하는 문자열의 끝에서 검색 가능한 문자열을 검색하기 시작하지만 처음부터 위치를 계산합니다. 다른 문자열에서 문자열을 검색하고 위치를 반환하는 INSTR vba 함수 ( 'In String'를 의미) 가 하나 더 있습니다. 하지만이 함수는 검색 가능한 문자열을 찾는 문자열의 처음부터 검색을 시작합니다.

INSTRREVINSTR 은 둘 다 MS Excel의 내장 문자열 / 텍스트 VBA 함수 입니다. Microsoft Visual Basic Editor에서 매크로를 작성하는 동안 사용할 수 있습니다.

통사론

위 이미지에서 볼 수 있듯이 2 개의 필수 인수와 2 개의 선택적 인수가 있습니다.

  • StringCheck As String : 필수 인수입니다. 검색되는 문자열 표현식을 제공해야합니다.
  • StringMatch As String : 이 인수도 필요합니다. 검색 할 문자열 표현식을 지정해야합니다.
  • Start As Long = -1 : 이것은 선택적 인수입니다. 숫자 표현식을 지정합니다. 기본적으로 -1을 사용하며 이는 검색이 마지막 문자 위치에서 시작됨을 의미합니다. 80과 같은 양수 값을 지정하면 왼쪽의 80 자 문자열 끝부터 검색을 시작합니다.
  • Compare As VbCompareMethod = vbBinaryCompare As Long : 이 인수는 선택 사항입니다.

이 인수에 대해 다음 값을 지정할 수 있습니다.

반환 값

  1. INSTRREV 함수는 문자열 검사  의 길이가 0이거나 문자열 일치  를 찾을 수 없거나 ' start'argument > length of string match 이면 0을 반환합니다 .
  2. 이 함수는 문자열 검사  또는 문자열 일치  가 'Null'인 경우 'Null'을 반환합니다 .
  3. 일치 하는 문자열 의 길이가 0이면 함수는 start로 돌아갑니다 .
  4. 경우 문자열이 일치 하는 문자열 검사에서 발견되고 , 그 기능은 일치가 발견 된 위치를 반환합니다.

VBA INSTRREV 기능을 사용하는 방법?

이 VBA INSTRREV Excel 템플릿은 여기에서 다운로드 할 수 있습니다 – VBA INSTRREV Excel 템플릿

영화 이름과 감독에 대한 데이터가 있다고 가정합니다. 감독 이름을 나누고 싶습니다.

1201 개의 행에 데이터가 있습니다. 이 작업을 수동으로 수행하면 시간이 많이 걸립니다.

이를 위해 VBA 코드를 사용합니다. 단계는 다음과 같습니다.

  • '개발자' 탭의 '코드' 그룹에서 사용할 수있는 'Visual Basic' 명령 을 클릭 하거나 Alt + F11 을 눌러 Visual Basic 편집기를 열 수 있습니다 .

  • 우리는 삽입합니다 모듈 은 Using '삽입'메뉴를 .

  • 'SplittingNames' 라는 서브 루틴을 생성합니다 .

  • 6 개의 변수가 필요합니다. 하나는 우리가 조작 할 셀의 값을 저장하기위한 것입니다. 두 번째는 문자열의 첫 번째 공간 위치를 저장하기 위해, 세 번째는 문자열의 마지막 공간 위치를 저장하기 위해, 네 번째는 마지막 행 번호를 저장하기 위해, 다섯 번째와 여섯 번째는 인접한 셀의 값을 인쇄하는 데 사용할 행과 열에 대해 저장합니다.

  • 시트에서 마지막으로 사용 된 행을 찾으려면 다음 코드를 사용해야합니다.

이 코드는 먼저 B1 셀을 선택한 다음 동일한 열에서 마지막으로 사용 된 셀을 선택한 다음 셀의 행 번호를 'LastRow'변수에 할당합니다.

  • 이제 B 열의 모든 셀을 조작하기 위해 'for'루프를 실행합니다 .

  • 2 행에서 1201 행까지 B 열의 셀 값을 's'변수에 하나씩 저장하여 조작합니다.

  • C (3rd Column)에 분할 이름을 쓰고 이후에 열을 작성해야하므로 변수 'Column' 의 값 을 3으로 설정해야합니다.

  • 문자열이 하나의 단어 일 경우 문자열에 공백이 없음을 의미하는 경우 문자열 자체를 출력으로 원합니다. 이를 위해 다음 과 같이 별표 기호 (하나 이상의 문자를 나타냄)와 함께 'If 및 Else 문' 을 사용하여 조건을 지정합니다 .

  • 문자열에 공백이 있으면 문자열을 분할하려고합니다. 동일한 작업을 수행 하기 위해 각각 첫 번째 공간 위치와 마지막 공간 위치를 찾기 위해 INSTRINSTRREV 함수를 사용 했습니다. 문자열에서 각각 첫 번째 단어와 마지막 단어를 찾는 데 도움이됩니다.

INSTR 함수는 다음과 같은 인수를 사용합니다.

인수 세부 정보

  • 시작 : 시작할 위치.
  • String1 : 검색중인 문자열 표현식을 제공해야합니다.
  • String2 : 검색 할 문자열 표현식을 지정해야합니다.

VbCompareMethod와 비교 : 비교 방법 지정. 기본적으로 이진 비교입니다.

  • 문자열에서 왼쪽 문자를 추출 하려면 vba LEFT 함수 를 사용해야 합니다. 우리가 사용했던 '마지막 공간-1' 마지막 공간 전에 왼쪽 문자를받을 수 있습니다.

첫 번째 공백 뒤의 문자열에서 올바른 문자를 추출 하려면 RIGHT 및 LEN 함수 를 사용해야합니다 .

매크로가 기록됩니다. 이제 F5 키를 사용하여 매크로를 실행하면 됩니다.

암호:

 Sub SplittingNames() Dim s As String Dim FirstSpace As Long Dim LastSPace As Long Dim LastRow As Long Dim Row As Long Dim Column As Long Sheet1.Range("B1").Select Selection.End(xlDown).Select LastRow = ActiveCell.Row For Row = 2 To LastRow s = Sheet1.Cells(Row, 2).Value Column = 3 If s Like "* *" Then FirstSpace = InStr(1, s, " ") LastSPace = InStrRev(s, " ") Sheet1.Cells(Row, Column).Value = Left(s, LastSPace - 1) Sheet1.Cells(Row, Column + 1).Value = Right(s, Len(s) - FirstSpace) Else Sheet1.Cells(Row, Column).Value = s End If Next End Sub 

We have a result now.