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
- 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 .
- Ta funkcja zwraca „Null”, jeśli sprawdzanie ciągu lub dopasowanie ciągu ma wartość „Null” .
- Jeśli pasujący ciąg ma zerową długość, funkcja wraca do początku .
- 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 ExcelZałóż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.