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)