Zahl aus Text extrahieren

Die Aufgabe

Die erste Zahl, die in einem Text vorkommt, soll extrahiert wer­den. Es han­delt sich um eine Zahl ohne Nachkom­mas­tellen. Eine Funk­tion soll den Wert als Zahl zurück­geben.

Zugegeben, es gibt ver­schiedene Wege, das auch mit Excel-Formeln ohne eine UDF zu machen. Dafür gibt es im Netz mehr als reich­lich Beispiele.

Gle­icher­maßen zugegeben, das Ganze lässt sich um einiges „ele­gan­ter” pro­gram­mieren. Auch Zahlen mit Nachkom­mas­tellen ließen sich erfassen.

Das ist aber nicht die Auf­gabe dieses Code-Schnipsels. Er soll Ihnen helfen, Code zu analysieren. Aus dem Grunde ist hier auch kein einziger Kom­men­tar enthal­ten. Ger­ade Ein­steiger kön­nen hier den Code Schritt für Schritt durchge­hen und schauen, was wann passiert. Aus diesem Grunde ist das Ganze auch extrem ein­fach „gestrickt”.

Der Aufruf der Funk­tion ist: =ZahlAusText(„Ihr_Text_mit_oder_ohne_Zahlen”)

▲ nach oben …

Der Code

Option Explic­it

Func­tion ZahlAusText(Zelle As Range) As Vari­ant

Dim x As String

Dim i As Inte­ger

Dim Pos1 As Inte­ger, Pos2 As Inte­ger

Dim Rc As Vari­ant

ZahlAus­Text = „”

x = Zelle.Value

Do

For i = 1 To Len(x)

If IsNumeric(Mid(x, i, 1)) Then

Pos1 = i

Pos2 = i

Exit For

End If

Next i

If Pos1 = 0 Then

Rc = „”

Exit Do

End If

If Pos1 < Len(x) Then

For i = Pos1 + 1 To Len(x)

If Not IsNumeric(Mid(x, i, 1)) Then

Pos2 = i – 1

Exit For

End If

Next i

End If

Rc = CLng(Mid(x, Pos1, Pos2 – Pos1 + 1))

Exit Do

Loop

ZahlAus­Text = Rc

End Func­tion

▲ nach oben …

Code4Import

Den obi­gen Code bekom­men Sie hier als *.txt oder auch als *.bas zum down­load­en. Bei­de Files sind als *.zip gepackt. Die *.bas wird den Source­code automa­tisch in das all­ge­meine Mod­ul der Arbeitsmappe importieren.

▲ nach oben …

Dieser Beitrag wurde unter Code-Schnipsel, Mit VBA/Makro, Text, Verschiedenes abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.