Strings in Excel VBA: Das x-te Auftreten eines Strings finden
Schritt-für-Schritt-Anleitung
Um das x-te Auftreten eines Strings in Excel VBA zu finden, kannst du eine User Defined Function (UDF) erstellen. Hier sind die Schritte:
-
Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
-
Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject“ > Einfügen > Modul).
-
Kopiere den folgenden Code in das Modul:
Public Function InstrN(strText As String, strZ As String, Optional varN)
Dim lngI As Long, lngS As Long
If IsMissing(varN) Then
InstrN = InStr(strText, strZ)
Else
If Len(strText) - Len(Replace(strText, strZ, "")) < varN Then
InstrN = 0
Else
For lngI = 0 To varN - 1
lngS = lngS + Len(Split(strText, strZ)(lngI)) + Len(strZ)
Next
InstrN = lngS
End If
End If
End Function
-
Speichere die Funktion und schließe den VBA-Editor.
-
Du kannst die UDF jetzt in deinen Excel-Formeln verwenden, z.B. =InstrN("Das ist ein Beispiel", " ", 3)
.
Häufige Fehler und Lösungen
Alternative Methoden
Eine weitere Möglichkeit, das x-te Auftreten eines Strings zu finden, ist die Verwendung von Regular Expressions. Hier ist ein Beispiel:
Sub searchText()
Dim myString As String, strIndex As String
Dim Regex As Object, myItems, n
Set Regex = CreateObject("vbscript.regexp")
myString = "das Haus ist im Haus vom Haus"
With Regex
.Global = True
.Pattern = "Haus"
Set myItems = .Execute(myString)
End With
For Each n In myItems
strIndex = strIndex & n.firstindex & vbNewLine
Next
If myItems.Count > 0 Then MsgBox "Suchtext kommt an den Stellen " & vbNewLine & strIndex & "vor"
Set Regex = Nothing
End Sub
Praktische Beispiele
-
UDF zum Finden des 3. Auftretens eines Leerzeichens:
MsgBox InstrN("Das ist ein Test", " ", 3) ' Gibt die Position des 3. Leerzeichens zurück
-
UDF für das Finden des 2. Vorkommens eines bestimmten Wortes:
MsgBox InstrN("Das Haus ist groß. Das Haus ist schön.", "Haus", 2) ' Gibt die Position des 2. Vorkommens von "Haus" zurück
Tipps für Profis
- Verwende die Funktion
InStrRev
, um das x-te Vorkommen eines Strings von rechts zu finden. Dies kann besonders nützlich sein, wenn du das letzte Vorkommen eines Suchbegriffs ermitteln möchtest.
- Kombiniere
InstrN
mit StrReverse
, um die Suche zu vereinfachen. Dies funktioniert gut in Kombination mit der InstrN
-Funktion.
Public Function InstrRevN(strText As String, strZ As String, Optional varN)
strText = StrReverse(strText)
strZ = StrReverse(strZ)
InstrRevN = InstrN(strText, strZ, varN)
End Function
FAQ: Häufige Fragen
1. Was ist der Unterschied zwischen Instr
und InstrRev
?
Instr
sucht von links nach dem ersten Vorkommen, während InstrRev
von rechts sucht.
2. Wie kann ich die UDF in Excel verwenden?
Du kannst die UDF in einer Zelle wie jede andere Excel-Funktion verwenden, z.B. =InstrN(A1, "Text", 2)
.
3. Funktioniert das auch in Excel 2010?
Ja, die Funktionen sind mit allen modernen Versionen von Excel, einschließlich Excel 2010, kompatibel.
4. Was tun, wenn die Funktion nicht das erwartete Ergebnis liefert?
Überprüfe die Eingaben auf genaue Übereinstimmung und stelle sicher, dass die Anzahl der Vorkommen, die du suchst, existiert.