Hartnäckige Leerzeichen in excel löschen / entfern

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 leider auch 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 werden nie mehr als drei nullen gelöscht. 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, die ich als Newbie auf dem Gebiet umsetzen kann?

Heeelp! I need sombody!!

Hi,
Ferndiagnosen sind immer schwierig, besonders wenn die „Symptome“ nur beschrieben werden. Ich kann mich gerne an einer Lösung beteiligen, dazu benötige ich allerings eine präzise Beschreibung auf welche At die Daten wie aus dem Netz „GEZOGEN“ werden. ALs zweites wäre es hilfreich eine Datei per mail zu bekommen, um den Vorgang nachzustellen.
Was mir spontan dazu einfällt ist die Frage nach den Zeichensätzen die hier eine Rolle spielen, welcher Zeichensatzt ist z.B. auf dem Webspace etc. UTF8 oder wie auch immer.
Also Datei und Vorgangsbeschreibung zwecks Nachvollziehbarkeit an mich, sonst kann ich nichts tun.

Hi,

präzise Beschreibung auf welche At die Daten wie aus dem Netz „GEZOGEN“ werden.

Kopie mit strC und Paste mit strV (HTML)da es so in der richtigen Formatierung bleibt.

ALs zweites wäre es hilfreich eine Datei per
mail zu bekommen, um den Vorgang nachzustellen.

Klar, kein Problem. Kann dir die excel schicken, bräuchte dann deine e-mail, oder wie läuft das hier im Forum?

Was mir spontan dazu einfällt ist die Frage nach den
Zeichensätzen die hier eine Rolle spielen, welcher
Zeichensatzt ist z.B. auf dem Webspace etc. UTF8 oder wie auch
immer.

Ehrlich gesagt habe ich keine Ahnung davon. Wie kann ich das heraus finden?

Hallo.

Mein alternativer Ansatz geht davon aus, dass die erste Ziffer, die du haben willst, eine Zahl ist. Es kommen also nur die Ziffern 1 - 9 (0) in Frage.

Meine grundsätzliche Vorgehensweise:

  1. Wert einlesen
  2. Wert von links nach rechts jede einzelne Stelle druchgehen, bis eine Ziffer (1 - 9) eingelesen wird.
  3. Alles was nicht 1 - 9 ist, wird einfach gelöscht, indem der Wert überschrieben wird.

Ich versuch das mal mit nem Code-Schnipsel zu verdeutlichen. Beispiel: Alle Werte stehen untereinander. Mit cells (x,y) geht es sicher auch, ich kenne mich damit aber nicht so gut aus. Also hier die meine Schleife:

i=1
do until range(„A“&i)=""

'hier jetzt der Einzelcode (siehe unten)
wert=range(„A“&i)
wert_kuerzen_sprung:
laenge=len(wert)
einzelwert=left(wert,1)
if einzelwert=„1“ then
goto fertig
elseif einzelwert=„2“ then
goto fertig

endif
wert=right(wert,laenge-1)
goto wert_kuerzen_sprung
fertig:
'Ende Einzelcode

i=i+1
Loop

Ich hoffe, ich habe da keine grundsätzlichen Fehler eingebastelt. Habe es nicht probiert. Notfalls musst du noch mal fragen.

Viel Erfolg.

Schreib doch mal den url von der Seite die Du kopierst, das könnte schon reichen ums nachzuvollziehen.

Hallo JJ
Probleme hast du! :smile:
Ich kann sie dir leider nicht lösen, sorry.
Halt die Nase immer schön im Wind!
singuali

Hallo,

wie hast du in Excel das Ersetzen durchgeführt? Hast du im Formular ein normales Leerzeichen angegeben, das gesucht werden soll?

Ich würde es so machen, dass ich aus einem betroffenen Feld so ein außergewöhnliches Leerzeichen markiere und mit STRG+C kopiere und dann in das Feld für das Suchmuster im Ersetzen-Dialog mit STRG+V einfüge. Dann sollte das Zeichen auch gefunden werden. Probiere es auch, indem du nicht nur ein einzelnes Zeichen kopierst, sondern alles, was vor der ersten Ziffer steht.

Sollte beides, also einzeln und vollständig gesucht, nicht weiterhelfen, so wirst du tatsächlich mit Hilfe eines kleines Programms arbeiten müssen, wenn du nicht Feld für Feld manuell bearbeiten willst. Ob ich dafür aber VBA verwenden würde, da bin ich mir nicht sicher. Es sieht nach sehr viel Code aus, was du hier notiert hast.

Wie wäre es, wenn du die HTML-Seite lokal speicherst und dann mit Hilfe eines kleinen Perl-Scriptes und eines regulären Ausdrucks alles geschwind überarbeitest? Das Scipt würde vermutlich nicht länger als maximal 6 bis 10 Zeilen. Das würde auch mit dem Regex von VB.NET oder C# funktionieren.

Dein VBA-Code klappt deshalb nicht, zumindest das erste Beispiel, weil du darin nichts anderes als der Ersetzen-Dialog machst. Und zwar suchst du nach Leerzeichen. Und du weisst doch bereits, dass es kein normales Leerzeichen ist.

Wenn dein letztes Beispiel funktioniert und nur noch das Problem besteht, dass es den Punkt wie ein Komma behandelt, dann füge doch einfach noch ein weiteres Ersetzen vor allen anderen ein, das nichts weiter macht, als „.“ in „,“ zu ersetzen. Dann bleiben deine nummerischen Werte wie gewünscht erhalten.

Grüße
Kurt

Kurt, du bist der Held des Tages!!!
Eine so simple Lösung, mit so großem Effekt.

Was auch immer diese unsichtbaren Zeichen waren, Leerzeichen waren es jedenfalls nicht! Aber mit strgC werden sie tatsächlich kopiert und dann klappt auch das ersetzen mit strgH. Super! Wenn auch etwas beschämend, das ich da nicht selber drauf gekommen bin!

Aber warum kompliziert wenn es auch einfach geht *freu*

Big thanx an alle die sich mit mir einen kopp gemacht haben!! aber Kurt ist heute der Checker :wink:

Hallo,

hast du es schon mit der Teil-Funktion in Excel versucht.
Scheint ja so zu sein, dass du einen „Text“ aus dem Internet nach Excel importierst.
Ich würde folgendermaßen versuchen:
=Teil(A1;1;12)*1

  • A1 ist die Zelle mit deinem Euro-Wert,
  • 1 steht für die 1. Stelle deines Textes, ab dem Ziffern stehen können
  • 12 als Beispiel für die Anzahl Stellen, in denen Ziffern stehen können.

Vielleicht gelingt’s auf diese einfache Weise.
Carsten.HB

Hi,

a) ich bin nicht so der Excel-Crack
b) Du hast das auch als Frage im Forum eingestellt.
So verweise ich darauf.

Gruß

Markus

Hallo,

Ich kann dein Problem nicht nach Stellen, da ich nicht weiß wie Du die Zahlen ins Excel einfügst.
Wenn ich in mein Excel Zahlen mit Leerzeichen eingebe, werden diese automatisch gelöscht.

Hast
Das schon probiert
der vorletzte Code

http://ms-excel.eu/vba/vba-textbehandlung/vba-leerze…

LG Fred

Hallo Jay Jay,

diesen Effekt habe ich nocht erzeugen können mit Office 2003 und Win7.
Da kann ich lieder nicht weiter helfen.

Gruß Hugo

Hallo Mr. JayJay,

liegt wahrscheinlich an Formatierungen HTML vs. Excel.

Schau dir mal die Import-Funktionen an, da kann man schon viel abfangen (z. B. Reinen Text importieren und dann später per VBA wieder excel-mäßig formatieren)

Gruß
Harry

Sorry da kann ich dir nicht helfen

MFG

Revulaner

Ich hätte es auch mit der Trim-Anweisung versucht. Sorry, weitere Ideen als Dein zweites Makro habe ich auch nicht.