In diesem Tutorial wird gezeigt, wie Sie die Mid VBA-Funktion verwenden, um Zeichen aus der Mitte einer Textzeichenfolge zu extrahieren.
Mid-Funktion
Mid-Funktion Hole n Zeichen
Die VBA-Mid-Funktion gibt n Zeichen aus einer Zeichenfolge ab Position m zurück:
123456789 | Sub MidBeispiel_1()MsgBox Mid("ABCDEFGHI", 4, 1) 'Ergebnis ist: "D"MsgBox Mid("ABCDEFGHI", 4, 2) 'Ergebnis ist: "DE"MsgBox Mid("ABCDEFGHI", 4, 50) 'Ergebnis ist: "DEFGHI"MsgBox Mid("ABCDEFG hI", 6, 1) 'Ergebnis ist: "F"MsgBox Mid("ABCDEFG hI", 6, 2) 'Ergebnis ist: "FG"MsgBox Mid("ABCDEFG hI", 6, 4) 'Ergebnis ist: "FG h"End Sub |
Mid-Funktion Hole n Zeichen in einer Variablen
Wie oben gezeigt, können Sie eine Zeichenfolge einfach durch Eingabe von Text in Anführungszeichen definieren. Aber die MID-Funktion funktioniert auch mit String-Variablen. In diesen Beispielen werden n Zeichen aus einer Zeichenfolge ab Position m extrahiert.
12345678 | Sub MidExample_2()Dim StrEx As String 'String-Variable definierenStrEx = "ABCDEFGHI"MsgBox Mid(StrEx, 2, 1) 'Ergebnis ist: "B"MsgBox Mid(StrEx, 2, 2) 'Ergebnis ist: "BC"MsgBox Mid(StrEx, 2, 50) 'Ergebnis ist: "BCDEFGHI"End Sub |
Mid-Funktion Hole n Zeichen aus einer Zelle
Strings können in VBA-Code definiert werden, aber Sie können auch Werte aus Zellen verwenden. Lesen Sie den Wert einer Zelle, halten Sie ihn in einer String-Variablen und extrahieren Sie n Zeichen aus diesem Arbeitsblattzellenwert ab Position m.
1234567891011 | Sub MidExample_3()Dim StrEx As String 'String-Variable definieren'Lesen Sie den Wert von Zelle A1 im Arbeitsblatt Sheet1StrEx = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value'Für dieses Beispiel ist der Wert von Zelle A1 "Möge die Macht mit dir sein"MsgBox Mid(StrEx, 4, 6) 'Ergebnis ist: " das F" (Leerzeichen am Anfang beachten)MsgBox Mid(StrEx, 2, 8) 'Ergebnis ist: "ay the F"MsgBox Mid(StrEx, 3, 4) 'Ergebnis ist: "y th"End Sub |
Mid-Funktion n Zeichen ersetzen
In den obigen Beispielen hat die Mid-Funktion die ursprüngliche Zeichenfolge nicht geändert. Es gab einen Teil davon zurück und ließ die ursprüngliche Zeichenfolge intakt. Mid Function kann verwendet werden, um Zeichen in einer Zeichenfolge zu ersetzen.
12345678910111213141516171819202122 | Sub MidExample_4()Dim StrEx As String 'String-Variable definierenSub MidExample_4()Dim StrEx As String 'String-Variable definierenStrEx = "Möge die Macht mit dir sein"Mitte(StrEx, 5, 1) = "VWXYZ"MsgBox StrEx 'Ergebnis ist: "Möge Vhe Horce mit dir sein"'Mitte Funktion hat Position 5 gefunden und 1 Zeichen in der ursprünglichen Zeichenfolge ersetztStrEx = "Möge die Macht mit dir sein"Mitte(StrEx, 5, 3) = "VWXYZ"MsgBox StrEx 'Ergebnis ist: "Möge VWX Horce mit dir sein"'Mitte Funktion hat Position 5 gefunden und 3 Zeichen in der ursprünglichen Zeichenfolge ersetztStrEx = "Möge die Macht mit dir sein"Mitte(StrEx, 5, 8) = "VWXYZ"MsgBox StrEx 'Ergebnis ist: "Möge VWXYZorce mit dir sein"'Mid Function hat Position 5 gefunden und versucht, 8 Zeichen zu ersetzen.'"VWXYZ" hat nur 5 Zeichen, daher wurden nur 5 Zeichen ersetzt.End Sub |
Mid Function Zweites Wort aus einer Phrase extrahieren
Wir können die VBA Mid-Funktion mit der VBA Instr-Funktion verwenden, um das zweite Wort in einem Text zu erhalten.
Die VBA InStr-Funktion kann die Position eines Zeichens im Text zurückgeben.
1 | InStr("Zwei Wörter", " ") 'Ergebnis ist 4 |
Wir können InStr verwenden, um das erste Leerzeichen zu finden, dann können wir erneut InStr verwenden, um die Suche nach dem ersten Leerzeichen zu starten, um das zweite Leerzeichen im Text zu finden. Schließlich können wir die Mid-Funktion verwenden, um das Wort zu extrahieren, da wir die Startposition des zweiten Wortes und seine Länge (die Differenz zwischen den beiden Leerzeichenpositionen) kennen.
12345678910111213141516171819202122232425 | Sub MidExample_5()Dim StrEx As String 'String-Variable definierenDim StartPos als IntegerDim EndPos als IntegerZweites Wort als String dimmenStrEx = "James Earl Jones ist ein Schauspieler"StartPos = InStr(StrEx, "")'Ergebnis ist 6'Finden Sie die Position des ersten LeerzeichensEndPos = InStr(StartPos + 1, StrEx, "")'Ergebnis ist 11'Finden Sie die Position des zweiten Leerzeichens, indem Sie die Suche nach dem ersten Leerzeichen startenSecondWord = Mid(StrEx, StartPos + 1, EndPos - StartPos - 1)'Mitte extrahiert die Zeichen, die nach dem ersten Leerzeichen beginnen (StartPos +1)'Mid verwendet auch die Länge des zweiten Wortes.'Das ist der Unterschied zwischen den Leerzeichenpositionen -1MsgBox SecondWord'Ergebnis ist EarlEnd Sub |