1.3k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen

Über Google hab ich eine Funktion gefunden, die mir aus einer Zelle nur den nummerischen Wert ausgibt.

Z.B. steht in A1 der Wert "2.7G" und mich interessiert nur 2.7.

Hier die Funktion:

Function Zahl(Zeichenkette As String) As String
Dim strZahl As String
Dim strZeichen As String, bolKomma As Boolean
Dim i As Integer, bolInZahl As Boolean

strZahl = vbNullString
bolInZahl = False
bolKomma = False
For i = 1 To Len(Zeichenkette)
strZeichen = Mid(Zeichenkette, i, 1)
If IsNumeric(strZeichen) Then
strZahl = strZahl & strZeichen
bolInZahl = True
Else
If bolInZahl Then
If (strZeichen Like "[.,]") And Not bolKomma Then
strZahl = strZahl & strZeichen
bolKomma = True
Else
Exit For
End If
End If
End If
Next
Zahl = IIf(Len(strZahl), Replace(strZahl, ".", ","), "0")
End Function



Nun möchte ich diese Funktion für jede Zelle z.B. im Bereich E1:E41 ausführen.
Dabei soll natürlich immer auf die Spalte A der aktuellen Zeile zugegriffen warden.

Habe mal folgendes Versucht:

With Range("E1:E" & LastRow)
.Value = Zahl("A" & .Row)
End With



Aber das schreibt mir nur die Zahl 1 in jede Zelle E1:E41.

Wie kann ich die Funktion Zahl mit dem Wert aus entsprechenden Zelle in Spalte A "füttern?


Hoffe, dass mir da jemand weiterhelfen kann... bin schon seit Stunden auf Google unterwegs. :-(

Wäre für Hilfe äusserst Dankbar!

Gruss Rolf

2 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Rolf,

versuch es mal so:

Sub testfunk()

Dim lastrow As Long
Dim zelle As Range

lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For Each zelle In Range("E1:E" & lastrow)
zelle.Value = Zahl(Cells(zelle.Row, 1).Value)
Next zelle

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

Super! So funktioniert's ...

Jetzt kann ich noch den Fehler in der Function Zahl suchen, der mir den Punkt durch ein Komma ersetzt. :-)

Aber das find ich dann glaub schon :-)

Besten Dank nochmal!!!

Gruss Rolf
...