Frage von Tuesday123, 55

Wie kann ich mit VBA alle nicht numerischen Zeichen aus einem bestimmten Bereich in Excel entfernen?

Hallo liebe Community,

ich versuche seit einer knappen Stunde diese Problem zu lösen und habe auch schon google konsultiert, konnte aber bisher keine zufriedenstellende Lösung finden.

Mit einem Zwischenschritt ohne VBA würde ich es hinbekommen, aber da ich diese Funktion sehr oft benutzen werde, wollte ich es doch etwas angenehmer haben.

  • Excel 2013
  • Mein Bereich ist E6:I400
  • Die kopierten Daten haben immer diesen Aufbauen: (Dezimal-)Zahl + Buchstaben (z.B. 0,9 g, 123 kcal)

Ich hätte nun gerne einen Knopf, den ich aktivieren kann, der dann in allen Zellen in meine Bereich jegliche Buchstaben/Leerzeichen entfernt und nurnoch die Zahlen ausgibt (also nurnoch 0,9 und 123 mit obigem Beispiel).

Ich hoffe ihr könnt mir helfen.

Vielen Dank im Voraus Tues

Expertenantwort
von Ninombre, Community-Experte für Excel, 41

so könnte es gehen: Mich hatte es selbst interessiert, ob es direkter geht, als Zeichen für Zeichen den Zellinhalt zu prüfen, habe aber nichts gefunden. Basis war dann die Funktion hier: http://www.office-loesung.de/ftopic419494_0_0_asc.php wobei diese genau andersrum ändert und die Zahlen rauswirft.

Sub zahlen()
Dim i As Integer, zahl As String
Dim rcell, rrng As Range
Set rrng = Range("E6:I400")
For Each rcell In rrng
For i = 1 To Len(rcell)
If IsNumeric(Mid(rcell, i, 1)) Or Mid(rcell, i, 1) = "," Then
zahl = zahl & Mid(rcell.Value, i, 1)
End If
Next i
rcell.Value = zahl
zahl = ""
Next
End Sub
Kommentar von Tuesday123 ,

Hallo Ninombre,

erstmal Danke für die schnelle Antwort!

Die Funktion funktioniert soweit, allerdings nur mit ganzen Zahlen. Aus 21.4 g wird leider 214.

Ich beziehe meine Daten von einer englischen Seite, daher wird kein Komma sondern ein Punkt bei Dezimalzahlen verwendet...Ist mir eben erst aufgefallen.

Das müsste man noch irgendwie durch ein Komma ersetzen, sonst funktionieren ja keine Folgeberechnungen. Macht die ganze Sache natürlich etwas komplizierter, aber ich bin für jeden weiteren Hinweis dankbar!

Kommentar von Oubyi ,

Falls Ninombre nicht mehr online ist, teste mal ob diese Erweiterung seines Codes funktioniert:

If IsNumeric(Mid(rcell, i, 1)) Or Mid(rcell, i, 1) = "." Then
zahl = zahl & Mid(rcell.Value, i, 1)
zahl.Replace What:=".", Replacement:=",", LookAt:=xlPart
End If

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten