Finden des n-ten Vorkommens eines Zeichens (Microsoft Excel)
Barry möchte oft das N-te Vorkommen eines Zeichens in einer Textzeichenfolge identifizieren. Er weiß, dass er die Arbeitsblattfunktionen SEARCH und FIND verwenden kann, um ein erstes Vorkommen zu finden, ist sich jedoch nicht sicher, wie er beispielsweise das dritte Vorkommen des Buchstabens „B“ in einer Textzeichenfolge finden kann.
Tatsächlich könnte die SEARCH-Funktion verwendet werden, um das gewünschte Vorkommen auf folgende Weise zu finden:
=SEARCHB("b",G20,(SEARCHB("b",G20,(SEARCHB("b",G20,1)+1))+1))
Beachten Sie, wie die SEARCHB-Funktion verschachtelt verwendet wird. Die Formel gibt an, wonach gesucht wird (der Buchstabe „b“), und die Anzahl der Verschachtelungsebenen gibt an, welches Vorkommen in der Zelle Sie suchen möchten. Die Formel gibt die Position des gewünschten Zeichens innerhalb der Zelle zurück.
Das Problem mit einer solchen Formel ist natürlich, dass sie schwierig zu warten ist und schnell unbrauchbar werden kann, wenn Sie beispielsweise das siebte Vorkommen finden möchten.
Eine flexiblere Formel wäre die folgende:
=FIND(CHAR(1),SUBSTITUTE(A1,"B",CHAR(1),3))
Diese Formel untersucht den Wert in A1. Es ersetzt den CHAR (1) -Code für das dritte Vorkommen von „B“ innerhalb der Zelle. Die FIND-Funktion sucht dann in der resultierenden Zeichenfolge nach der Position, an der CHAR (1) auftritt.
Wenn das gewünschte Vorkommen nicht vorhanden ist, gibt die Formel einen # VALUE-Fehler zurück.
Wenn Sie möchten, können Sie eine benutzerdefinierte Funktion erstellen, die nach der N-ten Position eines Zeichens sucht. Das folgende ist ein sehr einfaches Makro, das drei Argumente akzeptiert: die zu durchsuchende Zeichenfolge, den übereinstimmenden Text und die gewünschte Position.
Function FindN(sFindWhat As String, _ sInputString As String, N As Integer) As Integer Dim J As Integer FindN = 0 For J = 1 To N FindN = InStr(FindN + 1, sInputString, sFindWhat) If FindN = 0 Then Exit For Next End Function
Die Funktion unterscheidet bei der Suche zwischen Groß- und Kleinschreibung und gibt die Position innerhalb der angegebenen Zeichenfolge zurück, an der der Wert sFindWhat auftritt. Wenn in der angegebenen Instanz kein Vorkommen auftritt, gibt die Funktion eine 0 zurück. Im Folgenden wird gezeigt, wie die Funktion in einem Arbeitsblatt verwendet werden kann:
=FindN("b",C15,3)
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (10567) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: