Hartnäckige Leerzeichen in Excel löschen

Hallo zusammen,
Ich habe folgendes Problem:
Ich ziehe mir von einer Website ziehmlich viele Infos nach Excel 2007 mit winVista.
Dabei werden aber immer zwei ziemlich hartnäckige Leerzeichen vor die Zahlen gezogen, die man aber nicht sehen kann (Bsp: __300 €)
Aus anderen Foren weiß ich schon, dass das keine „normalen“ Leerzeichen sind.
Sie können nicht durch StrH: „suchen und ersetzen“ gelöscht werden. Sie bleiben einfach da.
Funktion glätten führt auch nicht zum gewünschten Ergebnis.
Jetzt habe ich mich seit gestern zum erstenmal mit VBA und Macros beschäftigt und sehe hier durchaus Potential an mein Ziel zu kommen. Bin aber leider ein absoluter Newbie auf dem Gebiet.
Folgendes habe ich schon probiert:

Sub LeerzeichenRaus()
Dim Bereich As Range

Set Bereich = Selection
With Bereich
.Replace What:=" „, Replacement:=“", _
LookAt:=xlPart, MatchCase:=True
End With
End Sub

Hier wird nur das “normale” Leerzeichen zwischen der Zahl und dem € gelöscht.
Bsp: __600000_€ = __600000€

Dann Das:
Sub keine_leerzeichen()
Dim vInhArr As Variant
Dim vErgArr() As Variant
Dim iAnz As Integer
Dim lZiel As Long
lZiel = Range(„A65536“).End(xlUp).Row
ReDim vErgArr(lZiel, 0)
vInhArr = Range(„A2:A“ & lZiel).Value
For iAnz = LBound(vInhArr) To UBound(vInhArr)
vErgArr(iAnz, 0) = Trim(vInhArr(iAnz, 1))
Next iAnz
Range(„A2:A“ & lZiel) = vErgArr
End Sub

Tut aber nix!

Was ansatzweise funktioniert ist dieses Macro:

Sub ersetzen()
Dim Bereich As Range
Set Bereich = Selection
With Bereich
.Replace What:=Chr(32), Replacement:="", LookAt:=xlPart, MatchCase:=True
.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, MatchCase:=True
End With
End Sub

Es löscht zwar wirklich alle Leerzeichen, aber bringt teilweise falsche Werte zum Vorschein.
Bsp:
Vorher

M

33.334€
600.001€
399.999€
500.000€
5.000€
777.778€
2€
12.345€
100.000€
99.000€
4€
20.001€
16.900€

Nachher

M

33,334
600,001
399,999
500
5
777,778
2
12,345
100
99
4
20,001
16,9

Wie man sieht wird hier wirklich alles gelöscht sogar das € und einige Nullen. Wenn man genauer hinschaut werden immer die letzten Nullen bis zur Zahl gelöscht, wenn die nullen nicht durch eine andere Zahl eingeschloßen ist, jedoch nie mehr als drei nullen. Außerdem wird der Punkt zu Komma. das ist auch schei?e wenn man 16.900 mit 16,9 vergleicht.

Gibt es hier Korrekturmöglichkeiten oder andere Ansätze um das zu umgehen?

Heeelp! I need sombody!!

Sub ersetzen()
Dim Bereich As Range
Set Bereich = Selection
With Bereich
.Replace What:=Chr(32), Replacement:="", LookAt:=xlPart,
MatchCase:=True
.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart,
MatchCase:=True
End With
End Sub

Wie man sieht wird hier wirklich alles gelöscht sogar das €
und einige Nullen. Wenn man genauer hinschaut werden immer die
letzten Nullen bis zur Zahl gelöscht, wenn die nullen nicht
durch eine andere Zahl eingeschloßen ist, jedoch nie mehr als
drei nullen. Außerdem wird der Punkt zu Komma. das ist auch
schei?e wenn man 16.900 mit 16,9 vergleicht.

Hallo Jay,

irgendwie sieht Excel das vorher als Text an durch die
Zeichen. Wenn die weg sind deutet das Excel als Zahl
dazu passt Punkt zu Komma.
Mit dem „€“ bin ich mir noch unsicher was sich da Excel denkt.
Zumindest sehe ich dem Code nix was das bewirken sollte.
Selbst wenn Excel dann das ganze durch den Euro als Währung erkennt
warum sollte Excel aus einer Währung eine Zahl machen?

Egal, lade mal mit dem obersten Link in FAQ:2606 eine Mappe hoch.
10-30 Beispieleintragungen in A reichen, möglichst alle
Kombinationen die auftreten können, also mit € oder ohne,
reiner Text, mit Zeichen 160 bzw. 32 oder ohne.

Wie ist die Spalte in deinem Original formatiert?
Wie ist sie ggfs. nach (k.A.) deinem Code formatiert?

Gruß
Reinhard

Hallo,

vieleicht solltest du zuerst mal schauen was das fuer Zeichen sind. Denn nicht alles was EXCEL als Leerzeichen darstellt ist auch eins.

Kopiere die mal die Zahlenfolgen in eine normale Textdatei und schau dir diese mit einem HEX-Editor (gibst einige im Netz als Freeware) an. Da kannst du rausfinden welche Zeichen es wirklich sind und diese gezielt eliminieren.

Den HEX-Wert in Dezimal umrechen und dann an CHR() uebergeben.

Tschau
Peter

Den HEX-Wert in Dezimal umrechen und dann an CHR() uebergeben.

Hallo Peter,

wieso umrechnen?

Sub tt()
MsgBox Chr(65)
MsgBox Chr(&H41)
End Sub

Gruß
Reinhard

Grüezi Mr. JayJay

Dabei werden aber immer zwei ziemlich hartnäckige Leerzeichen
vor die Zahlen gezogen, die man aber nicht sehen kann (Bsp:
__300 €)
Aus anderen Foren weiß ich schon, dass das keine „normalen“
Leerzeichen sind.
Sie können nicht durch StrH: „suchen und ersetzen“ gelöscht
werden. Sie bleiben einfach da.

Das sollte aber wie folgt durchaus klappen:

  • ein solches Zeichen in einer Zelle markieren und mit STRG+C in die Zwischenablage kopieren
  • Mit STRG+H den Ersetzen-Dialog aufrufen und bei ‚Ersetzen von:‘ das Zeichen aus der Zwischenablage einfügen mit STRG+V
  • Bei ‚Ersetzen mit:‘ leer lassen
  • Mit [OK] bestätigen

Nun werden alle diese Zeichen aus den Zellen entfernt.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -