Ten samouczek pokaże, jak używać funkcji Mid VBA do wyodrębniania znaków ze środka ciągu tekstowego.
środkowa funkcja
Pośrednia funkcja Pobierz n znaków
Funkcja VBA Mid zwraca n znaków z łańcucha zaczynając od pozycji m:
123456789 | Podrzędny przykład_1()MsgBox Mid("ABCDEFGHI", 4, 1) 'Wynik: "D"MsgBox Mid("ABCDEFGHI", 4, 2) 'Wynik: "DE"MsgBox Mid("ABCDEFGHI", 4, 50) 'Wynik: "DEFGHI"MsgBox Mid("ABCDEFG hI", 6, 1) 'Wynik: "F"MsgBox Mid("ABCDEFG hI", 6, 2) 'Wynik: "FG"MsgBox Mid("ABCDEFG hI", 6, 4) 'Wynik: "FG h"Napis końcowy |
Funkcja Mid Pobierz n znaków w zmiennej
Jak pokazano powyżej, możesz zdefiniować ciąg po prostu wpisując tekst w cudzysłowie. Ale funkcja MID działa również ze zmiennymi łańcuchowymi. Te przykłady wydobędą n znaków z łańcucha rozpoczynającego się od pozycji m.
12345678 | Sub MidExample_2()Dim StrEx As String 'Zdefiniuj zmienną łańcuchowąStrEx = "ABCDEFGHI"MsgBox Mid(StrEx, 2, 1) 'Wynik: "B"MsgBox Mid(StrEx, 2, 2) 'Wynik: „BC”MsgBox Mid(StrEx, 2, 50) 'Wynik: "BCDEFGHI"Napis końcowy |
Funkcja Mid Pobierz n znaków z komórki
Ciągi znaków można definiować w kodzie VBA, ale można również używać wartości z komórek. Odczytaj wartość komórki, zachowaj ją w zmiennej ciągu i wyodrębnij n znaków z tej wartości komórki arkusza roboczego, zaczynając od pozycji m.
1234567891011 | Sub MidExample_3()Dim StrEx As String 'Zdefiniuj zmienną łańcuchową'Odczytaj wartość komórki A1 w arkuszu Arkusz1StrEx = ThisWorkbook.Worksheets("Arkusz1").Range("A1").Value„W tym przykładzie wartość komórki A1 to „Niech moc będzie z tobą”MsgBox Mid(StrEx, 4, 6) 'Wynik to: „F” (zwróć uwagę na spację na początku)MsgBox Mid(StrEx, 2, 8) 'Wynik to: "Ay the F"MsgBox Mid(StrEx, 3, 4) 'Wynik to: "y"Napis końcowy |
Funkcja pośrednia Zamień n znaków
W powyższych przykładach funkcja Mid nie zmieniła oryginalnego ciągu. Zwrócił część, pozostawiając oryginalny ciąg nienaruszony. Funkcja Mid może służyć do zastępowania znaków w ciągu.
12345678910111213141516171819202122 | Sub MidExample_4()Dim StrEx As String 'Zdefiniuj zmienną łańcuchowąSub MidExample_4()Dim StrEx As String 'Zdefiniuj zmienną łańcuchowąStrEx = "Niech Moc będzie z tobą"Środek(StrEx, 5, 1) = "VWXYZ"MsgBox StrEx „Wynik to: „Niech Vhe Horce będzie z tobą”'Funkcja Mid znalazła pozycję 5 i zastąpiła 1 znak w oryginalnym ciągu znakówStrEx = "Niech Moc będzie z tobą"Środek (StrEx, 5, 3) = "VWXYZ"MsgBox StrEx „Wynik: „Niech VWX Horce będzie z tobą”„Funkcja Mid znalazła pozycję 5 i zastąpiła 3 znaki w oryginalnym ciągu”StrEx = "Niech Moc będzie z tobą"Środek(StrEx, 5, 8) = "VWXYZ"MsgBox StrEx „Wynik: „Niech VWXYZorce będzie z tobą”'Mid Function znalazła pozycję 5 i próbowała zastąpić 8 znaków.'"VWXYZ" ma tylko 5 znaków, więc tylko 5 znaków zostało zastąpionych.Napis końcowy |
Funkcja pośrednia Wyodrębnij drugie słowo z frazy
Możemy użyć funkcji VBA Mid z funkcją VBA Instr, aby uzyskać drugie słowo w tekście.
Funkcja VBA InStr może zwrócić pozycję znaku w tekście.
1 | InStr("Dwa słowa", " ") 'Wynik to 4 |
Możemy użyć InStr, aby znaleźć pierwszą spację, a następnie ponownie użyć InStr, rozpoczynając wyszukiwanie po pierwszej spacji, aby znaleźć drugą spację w tekście. Na koniec możemy użyć funkcji Mid, aby wyodrębnić słowo, ponieważ znamy początkową pozycję drugiego słowa i jego długość (różnicę między dwoma pozycjami spacji).
12345678910111213141516171819202122232425 | Podrzędny przykład_5()Dim StrEx As String 'Zdefiniuj zmienną łańcuchowąDim StartPos jako liczba całkowitaDim EndPos jako liczba całkowitaPrzyciemnij drugie słowo jako ciągStrEx = „James Earl Jones jest aktorem”Pozycja pocz = InStr(StrEx, " ")„Wynik to 6”„Znajdź pozycję pierwszej przestrzeni”Pozycja Końcowa = InStr(Pozycja Początkowa + 1, StrEx, " ")„Wynik to 11”'Znajdź pozycję drugiego miejsca, rozpoczynając wyszukiwanie po pierwszym miejscuSecondWord = Mid(StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid wyodrębnia znaki zaczynające się po pierwszej spacji (Pozycja Startowa +1)Mid używa również długości drugiego słowa.„To jest różnica między miejscami w pozycjach -1”MsgBox Drugie słowo„Wynik to EarlNapis końcowy |