Funkcja Excel VBA InStr – wyjaśnione z przykładami

Wczoraj otrzymałem e-mail od jednego z moich czytelników – czerwiec.

Chciała wiesz, jak zastosować pogrubioną czcionkę do określonej części ciągu w komórce. Na przykład pogrubiony format zastosuj tylko do słowa „Hello” z „Hello World”.

I chciała to zrobić dla setek komórek naraz.

Ponieważ istnieje nie ma wbudowanej funkcji w programie Excel, która mogłaby to zrobić, stworzyłem proste makro, które wykorzystuje funkcję Excel VBA InStr (zobaczysz, jak to zrobić w przykładzie 4 w tym samouczku).

Ale najpierw zobaczmy jak działa funkcja Excel VBA InStr!

Ten samouczek obejmuje:

Funkcja Excel VBA InStr

W tym samouczku wyjaśnię użycie funkcji InStr w Excel VBA i zobaczę kilka praktycznych przykładów, w których można jej użyć.

Funkcja Excel VBA InStr – wprowadzenie

Funkcja InStr znajduje pozycję określonego podciągu w ciągu i zwraca pierwszą pozycję jego wystąpienia.

Na przykład, jeśli chcesz znaleźć pozycję „x” w „Excel”, używając funkcji Excel VBA InStr zwróci 2.

Składnia funkcji InStr

  • – (argument opcjonalny) jest to liczba całkowita, która informuje funkcję InStr o pozycji początkowej, od której powinna zacząć szukać. Na przykład, jeśli chcę, aby wyszukiwanie zaczynało się od początku, wprowadzę wartość jako 1. Jeśli chcę, aby zaczynało się od trzeciego znaku i dalej, użyję 3. Jeśli pominięte, przyjmowana jest domyślna wartość 1.
  • Ciąg1 – jest to główny ciąg (lub nadrzędny), w którym chcesz wyszukiwać. Na przykład, jeśli szukasz pozycji x w programie Excel, Ciąg 1 to „Excel”.
  • Ciąg2 – to jest podciąg, którego szukasz. Na przykład, jeśli szukając pozycji x w Excelu, String2 będzie x.
  • – (argument opcjonalny) Możesz określić jedną z następujących trzech wartości argumentu:
    • vbBinaryCompare – To zrobiłoby znak przez porównanie znaków. Na przykład, jeśli szukasz „x” w „Excel”, zwróci 2, ale jeśli szukasz „X” w „Excel”, zwróci 0, ponieważ X jest na górze Możesz także użyć wartości 0 zamiast vbBinaryCompare. Jeśli argument zostanie pominięty, jest to wartość domyślna.
    • vbTextCompare – spowoduje to porównanie tekstowe. Na przykład, jeśli szukasz „x” lub „X” w programie Excel, w obu przypadkach zwróci wartość 2. Ten argument ignoruje wielkość liter. Można również użyć 1 zamiast vbTextCompare.
    • vbDatabaseCompare – jest używany tylko w programie Microsoft Access. wykorzystuje informacje w bazę danych do wykonania porównania. Możesz także użyć 2 zamiast vbDatabaseCompare.

Dodatkowe uwagi dotyczące funkcji InStr VBA w programie Excel:

  • InStr to VBA funkcja, a nie funkcja arkusza. Oznacza to, że nie możesz go użyć w arkuszu.
  • Jeśli Ciąg2 (który jest podłańcuchem, którego szukasz) jest pusty, funkcja zwróci wartość argumentu.
  • Jeśli funkcja InStr nie może znaleźć podłańcucha w głównym ciągu, zwróci 0.

Spójrzmy teraz na przykład użycia funkcji Excel VBA InStr

Przykład 1 – Znajdowanie pozycji od początku

W tym przykładzie użyję funkcji InStr, aby znaleźć pozycję „V” w „Excel VBA” od początku.

Kod do tego będzie wyglądał następująco:

Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub

Po uruchomieniu tego kodu wyświetli się okno komunikatu z wartością 7, to pozycja „V” w ciągu „Excel VBA”.

Przykład 2 – Znajdowanie pozycji od początku drugiego słowa

Załóżmy, że chcę znaleźć pozycję „the” w zdaniu – „Szybki brązowy lis przeskakuje leniwego psa”

Jednak chcę, aby wyszukiwanie zacząć od drugiego słowa i dalej.

W tym przypadku musimy zmienić argument, aby upewnić się, że określa on pozycję, od której zaczyna się drugie słowo.

Oto kod, który zrobi to:

Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Ten kod pokaże okienko komunikatu z wartością 32, ponieważ określiliśmy pozycję początkową na 4. Dlatego ignoruje on pierwszy ' Znak „i znajduje drugie„ w ”w zdaniu.

Jeśli chcesz, aby było bardziej dynamiczne, możesz ulepszyć kod tak, aby automatycznie ignorował pierwsze słowo.

Oto ulepszony kod, który to zrobi:

Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Ten kod najpierw znajduje pozycję znaku spacji i zapisuje ją w zmiennej StartingPosition.

Następnie używa tej zmiennej jako pozycji początkowej w celu wyszukania słowa „the”.

Dlatego zwraca 32 (czyli pozycję początkową „the” po pierwszym słowie).

Przykład 3 – Znajdowanie pozycji @ w adresie e-mail

Możesz łatwo utworzyć niestandardową funkcję, aby znaleźć pozycję @ w adresie e-mail za pomocą funkcji Excel VBA InStr.

Oto kod do utworzenia funkcji niestandardowej:

Teraz możesz używać tej funkcji niestandardowej jak każdej innej funkcji arkusza. Pobiera odwołanie do komórki jako dane wejściowe i podaje pozycję @ w nim.

Podobnie możesz utworzyć funkcja niestandardowa, aby znaleźć pozycję dowolnego podłańcucha w ciągu głównym.

Przykład 4 – Podświetlanie części ciągu w komórkach

To jest zapytanie, które zostało zadane w czerwcu (mój czytelnik który również zainspirował mnie do napisania tego samouczka).

Oto przykładowe dane w formacie, który przysłał mi czerwiec:

Jej zapytaniem było pogrubienie liczb poza nawiasem.

Oto kod, który utworzyłem, który to robi:

Powyższy kod używa pętli For Each przejść przez każdą z komórek w zaznaczeniu. Identyfikuje położenie znaku nawiasu otwierającego za pomocą funkcji InStr. Następnie zmienia czcionkę tekstu przed nawiasem.

Aby użyć tego kodu, musisz skopiować i wkleić moduł w edytorze VB.

Po skopiowaniu wklejenia kodu, wybierz komórki, w których chcesz wykonać to formatowanie, i uruchom makro (jak pokazano poniżej).

Mogą Ci się również spodobać następujące samouczki Excel VBA:

  • Funkcja Excel VBA SPLIT.
  • Funkcja VBA TRIM.
  • Kompletny przewodnik po pętlach VBA programu Excel .
  • Przewodnik dla początkujących na temat używania For Next Loop w Excel VBA.
  • Jak utworzyć i korzystać z dodatku Excel.
  • Jak połączyć wiele skoroszytów do jednego skoroszytu programu Excel.
  • Jak liczyć kolorowe komórki w programie Excel.
  • Przydatne przykłady makr Excel VBA dla początkujących.
  • Jak sortować dane w programie Excel za pomocą języka VBA (Przewodnik krok po kroku)

Leave a Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *