Microsoft Excel

Herbers Excel/VBA-Archiv

Suchen und Ersetzen Makro

Betrifft: Suchen und Ersetzen Makro von: kk_vba
Geschrieben am: 20.08.2014 14:57:27

Hallo,

mir stellt sich folgendes Szenario:
Ich habe mehrere Spalten, die mit Zahlen als Text gefüllt sind und zwar in folgendem Format:
5.89
19.99
3.76578

Nun möchte ich die Punkte mit Kommas ersetzen um später die Zellen als Zahl zu formatieren und zu berechnen.

Ich markiere also die Spalte, Suche nach "." ersetze durch ",".
So weit alles ok.

Das habe ich nun als Makro aufgezeichnet und ein bisschen bereinigt und der Code sieht wie folgt aus:

Columns("N:N").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

Das Makro funktioniert jetzt nicht 100%ig. Bei den Zellen, die viele Stellen hinter dem "." haben, wird der Punkt einfach gelöscht anstatt ersetzt. Bei den anderen Spalten funktioniert er einwandfrei.

Ich kann mir nicht erklären woran das liegt... über Hilfe wäre ich dankbar.

Danke und Grüße

  

Betrifft: AW: Suchen und Ersetzen Makro von: Daniel
Geschrieben am: 20.08.2014 15:09:24

Hi
das ist die Excelianische Sprachverwirrung.

Wenn du Werte durch ERSETZEN/REPLACE änderst, dann ist das für Excel wie eine Neueingabe.
Dh Excel prüft die eingegebene Zeichenfolge, ob es sich dabei um eine Formel, eine Zahl, ein Datum oder einen Text handeln könnte und behandelt sie entsprechen und macht daraus eine Formel wenn die Zeichenfolge mit "=" beginnt, eine Zahl, wenn sie wie eine Zahl ausssieht, ein Datum, wenn sie wie ein Datum aussieht, und ansonsten wie Text.

Das Problem ist jetzt, dass Excel mit dir "deutsch" spricht, dh damit es eine Zahl als Zahl erkennt muss diese im Deutschen Zahlenformat mit dem Komma als Dezimalzeichen geschrieben sein.

Mit VBA unterhält sich Excel jedoch in den meisten Fällen auf "englisch", dh wenn VBA einen Wert in die Zellen schreibt, muss dieser dem Englsichen Zahlenformat entsprechen (Punkt als Dezimalzeichen), damit Excel den Wert als Zahl erkennt.

das führt dann zu der etwas paradox anmutenden Situation, dass du hier den Punkt durch einen Punkt ersetzen musst, damit die Texte in Zahlen gewandelt werden, wenn du das Ersetzen per Makro ausführen lässt:

Columns("N:N").Replace What:=".", Replacement:=".", LookAt:=xlPart
Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Suchen und Ersetzen Makro"