VBA InStrRev - Jak korzystać z funkcji Excel VBA InStrRev?

Spisie treści

Excel VBA INSTRREV

Funkcja VBA INSTRREV , jak oznacza `` In String Reverse '' , zwraca pozycję pierwszego wystąpienia szukanego ciągu (podciągu) w innym ciągu, zaczynając od końca ciągu (od prawej do lewej), z którego szukamy przeszukiwalny ciąg.

Funkcja INSTRREV rozpoczyna wyszukiwanie szukanego ciągu od końca ciągu, w którym musimy znaleźć, ale zlicza pozycję od początku. Jest jeszcze jedna funkcja INSTR VBA (skrót od `` In String '' ), która również wyszukuje ciąg w innym ciągu i zwraca pozycję, ale ta funkcja rozpoczyna wyszukiwanie od początku ciągu, z którego szukamy ciągu.

INSTRREV i INSTR , oba są wbudowaną funkcją String / Text VBA programu MS Excel. Możemy ich używać podczas pisania dowolnego makra w Edytorze Microsoft Visual Basic.

Składnia

Jak widać na powyższym obrazku, istnieją 2 argumenty obowiązkowe i 2 opcjonalne.

  • StringCheck As String: To jest wymagany argument. Musimy podać wyszukiwane wyrażenie łańcuchowe.
  • StringMatch As String: Ten argument jest również wymagany. Musimy określić wyszukiwane wyrażenie tekstowe.
  • Start As Long = -1: to jest argument opcjonalny. Określamy wyrażenie liczbowe. Domyślnie przyjmuje wartość -1, co oznacza, że ​​wyszukiwanie rozpoczyna się na ostatniej pozycji znaku. Jeśli podamy jakąkolwiek wartość dodatnią, taką jak 80, wyszukiwanie rozpocznie się od końca ciągu w tych 80 znakach po lewej stronie.
  • Porównaj jako VbCompareMethod = vbBinaryCompare As Long: ten argument jest opcjonalny.

Możemy określić następujące wartości dla tego argumentu.

Zwracane wartości

  1. Funkcja INSTRREV zwraca 0, jeśli sprawdzenie ciągu ma zerową długość lub nie znaleziono dopasowania ciągu lub argument „start” > długość pasującego ciągu .
  2. Ta funkcja zwraca „Null”, jeśli sprawdzanie ciągu lub dopasowanie ciągu ma wartość „Null”.
  3. Jeśli pasujący ciąg ma zerową długość, funkcja wraca do początku .
  4. Jeśli ciąg znaków zostanie znaleziony w ramach kontroli ciągu , funkcja zwraca pozycję, w której znaleziono dopasowanie.

Jak korzystać z funkcji VBA INSTRREV?

Załóżmy, że mamy dane dotyczące nazw filmów i ich reżyserów. Chcemy podzielić nazwiska reżyserów.

Mamy dane w 1201 wierszach. Jeśli wykonamy to zadanie ręcznie, zajmie to dużo czasu.

Aby zrobić to samo, użyjemy kodu VBA. Kroki to:

  • Musimy kliknąć polecenie „Visual Basic” dostępne w grupie „Kod” w zakładce „Deweloper” lub nacisnąć Alt + F11, aby otworzyć edytor Visual Basic.
  • Moduł wstawimy za pomocą menu „Wstaw” .
  • Utworzymy podprogram o nazwie „SplittingNames”.
  • Potrzebujemy 6 zmiennych - jedna do przechowywania wartości komórek, którymi będziemy manipulować. Drugi do przechowywania pozycji pierwszej spacji w ciągu, trzeci do przechowywania pozycji ostatniej spacji w ciągu, czwarty do przechowywania numeru ostatniego wiersza, piąty i szósty dla wiersza i kolumny, których użyjemy do wydrukowania wartości w sąsiednich komórki.
  • Aby znaleźć ostatnio używany wiersz w arkuszu, musimy użyć następującego kodu.

Ten kod najpierw wybierze komórkę B1, a następnie wybierze ostatnio używaną komórkę w tej samej kolumnie, a następnie przypisujemy numer wiersza komórki do zmiennej „LastRow”.

  • Teraz, aby manipulować wszystkimi komórkami w kolumnie B, uruchomimy pętlę „for” .
  • Będziemy przechowywać wartość komórek w kolumnie B od wiersza 2 do wiersza 1201 jedna po drugiej w zmiennej „s”, aby nimi manipulować.
  • Musimy ustawić wartość zmiennej „kolumna” do 3 jak musimy napisać nazwy podzielone w C (3 rd kolumna) i kolumnę dalej.
  • Jeśli ciąg jest tylko jednym słowem, co oznacza, że ​​nie ma w nim spacji, to chcemy, aby sam łańcuch był wyjściowy. W tym celu określimy warunek za pomocą instrukcji „If and Else” ze znakiem gwiazdki (oznaczającym jeden lub więcej znaków) w następujący sposób:
  • Jeśli w ciągu jest miejsce, chcemy podzielić ciąg. Aby zrobić to samo, użyliśmy funkcji INSTR i INSTRREV, aby znaleźć odpowiednio pierwszą pozycję spacji i ostatnią pozycję spacji. Pomoże nam to znaleźć odpowiednio pierwsze i ostatnie słowo w ciągu.

Funkcja INSTR przyjmuje poniższy argument:

Argument Details

  • Start: From which position to start.
  • String1: We need to give string expression being searched.
  • String2: We need to specify string expression being searched for.

Compared as VbCompareMethod: Specifying Comparing method. By default, it is binary compare.

  • We need to use the VBA LEFT function to extract left characters from the string. We have used ‘Last Space-1’ to get the left characters before the last space.

We need to use the RIGHT and LEN functions to extract the right characters from the string after the first space.

Macro is written. Now we just need to run the macro using the F5 key.

Code:

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"). Wybierz Selection.End (xlDown). Wybierz 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

Mamy teraz wynik.

Interesujące artykuły...