Suchen der ersten Nicht-Ziffer in einem Textwert (Microsoft Excel)
Tony hat eine Reihe von Daten in einem Arbeitsblatt, das aus Ziffern und anderen Zeichen besteht. Zum Beispiel könnte er eine Zelle haben, die „1234567Blue“ enthält. Tony möchte in der Lage sein, die Zeichenposition herauszufinden, an der das erste nichtstellige Zeichen auftritt. Im Beispiel des Textes „1234567Blue“ möchte Tony herausfinden, dass sich das erste nichtstellige Zeichen an Position 8 befindet.
Es gibt zwei Möglichkeiten, um den gewünschten Wert zu erzielen. Die erste besteht darin, eine Array-Formel zu verwenden, um die Position zu berechnen. Die folgende Array-Formel (eingegeben mit Strg + Umschalt + Eingabetaste) funktioniert in den meisten Fällen:
=MATCH(TRUE,ISERROR(VALUE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))),0)
Die einzige Instanz, in der diese Arrayformel nicht funktioniert, ist, wenn die Zelle A1 entweder leer ist oder einen streng numerischen Wert enthält. Wenn Ihre Liste diese Art von Daten enthält (oder überhaupt keine Daten), sollten Sie eine etwas längere Array-Formel verwenden:
=IF(LEN(A1)=0,0,MIN(IF(1ISNUMBER(1MID(A1,ROW(INDIRECT("A1:A"& LEN(A1))),1))=0,ROW(INDIRECT("A1:A"&LEN(A1))),LEN(A1)+1)))* (ISNUMBER(A1)=FALSE)
Denken Sie daran, dass dies eine einzelne Array-Formel ist, die mit Strg + Umschalt + Eingabetaste eingegeben wird. Fälle, in denen A1 keine nichtstelligen Zeichen enthält (wie in einer leeren Zelle oder einem Wert wie „123“), werden ordnungsgemäß behandelt.
Eine andere mögliche Array-Formel, die die gewünschte Position zurückgeben sollte, ist die folgende. Dieser sollte mit leeren Zellen und streng numerischen Werten gut umgehen können, ist jedoch kürzer als die zuvor vorgestellte Array-Formel:
=IFERROR(MATCH(1,ISERR(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)1)1,),)
Die andere Möglichkeit, die Position des ersten nichtstelligen Zeichens herauszufinden, besteht darin, eine benutzerdefinierte Funktion zu erstellen. Es gibt viele verschiedene Möglichkeiten, wie ein solches Makro implementiert werden kann. Eine der einfachsten Möglichkeiten, das Makro zu implementieren, besteht darin, einfach jedes Zeichen in dem zu durchlaufen, was an das Makro übergeben wird. Wenn ein Zeichen gefunden wird, das außerhalb des ASCII-Codebereichs für Ziffern (48 bis 57) liegt, wissen Sie, dass Sie die erste Position gefunden haben. Das folgende Makro zeigt eine Möglichkeit, diese Art von Technik auszuführen:
Function FirstNonDigit(str As String) Dim iChar As Integer Dim iPos As Integer Dim J As Integer Application.Volatile iPos = 0 For J = 1 To Len(str) iChar = Asc(Mid(str, J, 1)) If iChar <= 47 Or iChar >= 58 Then iPos = J Exit For End If Next J FirstNonDigit = iPos End Function
Um die Funktion zu verwenden, verwenden Sie einfach eine Formel wie diese in Ihrem Arbeitsblatt:
=FirstNonDigit(A1)
Wenn die Zelle, auf die Sie verweisen, leer ist oder nur Ziffern enthält, gibt die Funktion einen Wert von 0 zurück.
_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 (10610) 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: