VBA INSTRREV

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 łańcucha, w którym musimy się 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ć szukane wyrażenie tekstowe.
  • Start As Long = -1: to jest argument opcjonalny. Określamy wyrażenie liczbowe. Domyślnie przyjmuje -1, co oznacza, że ​​wyszukiwanie zaczyna 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 sprawdzanie 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?

Możesz pobrać ten szablon VBA INSTRREV Excel tutaj - Szablon VBA INSTRREV Excel

Załóżmy, że mamy dane o nazwiskach filmów i ich reżyserach. 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” .

  • Stworzymy podprogram o nazwie „SplittingNames” .

  • Potrzebujemy 6 zmiennych. Jeden 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 do przechowywania wiersza i kolumny, których użyjemy do wydrukowania wartości w sąsiednich komórkach.

  • 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 „Column” na 3, ponieważ musimy zapisać nazwy podziału w C (trzecia kolumna), a kolumnę dalej.

  • Jeśli łańcuch jest tylko jednym słowem, co oznacza, że ​​nie ma spacji w ciągu, to chcemy, aby sam łańcuch był wyjściem. 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:

Szczegóły argumentu

  • Start: od której pozycji rozpocząć.
  • Ciąg1: Musimy podać wyszukiwane wyrażenie łańcuchowe.
  • String2: Musimy określić wyszukiwane wyrażenie tekstowe.

W porównaniu z VbCompareMethod: Określanie metody porównania. Domyślnie jest to porównanie binarne.

  • Musimy użyć VBA LEWO funkcji wyodrębnić lewe znaki z łańcucha. Użyliśmy „Last Space-1”, aby uzyskać lewe znaki przed ostatnią spacją.

Musimy użyć funkcji PRAWO i DŁ, aby wyodrębnić właściwe znaki z ciągu po pierwszej spacji.

Napisano makro. Teraz musimy tylko uruchomić makro za pomocą klawisza F5 .

Kod:

 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 

Teraz mamy wynik.