Tento tutoriál předvede, jak pomocí funkce Mid VBA extrahovat znaky ze středu textového řetězce.
Střední funkce
Střední funkce Získejte n znaků
Funkce VBA Mid vrací n znaků z řetězce začínajícího od pozice m:
123456789 | Sub MidExample_1 ()MsgBox Mid ("ABCDEFGHI", 4, 1) 'Výsledek je: "D"MsgBox Mid ("ABCDEFGHI", 4, 2) 'Výsledek je: "DE"MsgBox Mid („ABCDEFGHI“, 4, 50) Výsledkem je „DEFGHI“MsgBox Mid („ABCDEFG hI“, 6, 1) 'Výsledek je: „F“MsgBox Mid ("ABCDEFG hI", 6, 2) 'Výsledek je: "FG"MsgBox Mid („ABCDEFG hI“, 6, 4) 'Výsledek je: „FG h“End Sub |
Střední funkce Získejte n znaků v proměnné
Jak je uvedeno výše, řetězec můžete definovat jednoduše zadáním textu obklopeného uvozovkami. Funkce MID však bude fungovat také s řetězcovými proměnnými. Tyto příklady extrahují n znaků z řetězce začínajícího od pozice m.
12345678 | Sub MidExample_2 ()Dim StrEx As String 'Definujte proměnnou řetězceStrEx = "ABCDEFGHI"MsgBox Mid (StrEx, 2, 1) 'Výsledek je: "B"MsgBox Mid (StrEx, 2, 2) 'Výsledek je: "BC"MsgBox Mid (StrEx, 2, 50) 'Výsledek je: "BCDEFGHI"End Sub |
Střední funkce Získejte n znaků z buňky
Řetězce lze definovat v kódu VBA, ale také můžete použít hodnoty z buněk. Přečtěte si hodnotu buňky, ponechte ji v řetězcové proměnné a extrahujte n znaků z této hodnoty buňky buňky počínaje pozicí m.
1234567891011 | Sub MidExample_3 ()Dim StrEx As String 'Definujte proměnnou řetězce'Přečtěte si hodnotu buňky A1 v listu List1StrEx = ThisWorkbook.Worksheets ("Sheet1"). Range ("A1"). Value„V tomto případě je hodnota buňky A1„ Nechť je síla s tebou “MsgBox Mid (StrEx, 4, 6) 'Výsledek je: "F" (Všimněte si mezery na začátku)MsgBox Mid (StrEx, 2, 8) 'Výsledkem je: „ay the F“MsgBox Mid (StrEx, 3, 4) 'Výsledkem je: „y th“End Sub |
Střední funkce Nahradit n znaků
Ve výše uvedených příkladech funkce Mid nezměnila původní řetězec. Vrátilo to část a původní řetězec zůstal nedotčený. Střední funkci lze použít k nahrazení znaků v řetězci.
12345678910111213141516171819202122 | Sub MidExample_4 ()Dim StrEx As String 'Definujte proměnnou řetězceSub MidExample_4 ()Dim StrEx As String 'Definujte proměnnou řetězceStrEx = „Ať je Síla s tebou“Střední (StrEx, 5, 1) = "VWXYZ"Výsledek MsgBox StrEx je: „Může být Vhe Horce s vámi“'Střední funkce nalezla pozici 5 a nahradila 1 znak v původním řetězciStrEx = „Ať je Síla s tebou“Střední (StrEx, 5, 3) = "VWXYZ"Výsledek MsgBox StrEx je: „Ať je s vámi VWX Horce“'Střední funkce nalezla pozici 5 a nahradila 3 znaky v původním řetězciStrEx = „Ať je Síla s tebou“Střední (StrEx, 5, 8) = "VWXYZ"Výsledek MsgBox StrEx je: „Může být VWXYZorce s vámi“„Střední funkce našla pozici 5 a pokusila se nahradit 8 znaků.„VWXYZ“ má pouze 5 znaků, takže bylo nahrazeno pouze 5 znaků.End Sub |
Extrakce střední funkce druhé slovo z fráze
K získání druhého slova v textu můžeme použít funkci VBA Mid s funkcí VBA Instr.
Funkce VBA InStr může vrátit pozici znaku uvnitř textu.
1 | InStr ("Dvě slova", "") 'Výsledek je 4 |
Můžeme použít InStr k nalezení první mezery, pak můžeme znovu použít InStr, která zahájí hledání po první mezerě k nalezení druhé mezery v textu. Nakonec můžeme použít funkci Mid k extrahování slova, protože známe počáteční pozici druhého slova a jeho délku (rozdíl mezi dvěma mezerami).
12345678910111213141516171819202122232425 | Sub MidExample_5 ()Dim StrEx As String 'Definujte proměnnou řetězceDim StartPos jako celé čísloDim EndPos jako celé čísloDim SecondWord jako řetězecStrEx = "James Earl Jones je herec"StartPos = InStr (StrEx, "")„Výsledek je 6"Najděte polohu prvního prostoru."EndPos = InStr (StartPos + 1, StrEx, "")„Výsledek je 11'Najděte polohu druhého prostoru spuštěním hledání za prvním mezerouSecondWord = Mid (StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid extrahuje znaky začínající za první mezerou (StartPos +1)„Mid používá také délku druhého slova.„To je rozdíl mezi pozicemi mezer -1MsgBox SecondWord„Výsledkem je hraběEnd Sub |