EXCEL Makro. 3 Dezimalstellen bei Kommazahlen, andere ignorieren

Meinst Du so was in der Art, oder wirklich ein komplette Datei?
Die unteren Zahlen sind Originalzahlen, so wie sie in Excel nach dem Import, eingesetzt werden.
3,5 sollten in diesem Beispiel 3500 sein.

A 2,497 3,5
B 202 309
C 156 259
D 148 250
E 103 175
F 98 170
G 109 165
H 87 142
I 86 127
 
Zuletzt bearbeitet:
Wenn ich die Datei als CSV speichern will kommt die Meldung: "Der ausgewählte Dateityp unterstützt keine Arbeitsmappen, die mehrere Blätter enthalten"
 
"CSV" habe ich nur ins Spiel gebracht weil ich dachte deine Daten wären im Original so gespeichert.

Wenn dir eine Tabelle reicht, kannst du die Meldung einfach ignorieren, es werden einfach die Tabellenblätter 2, 3, ... geöscht.

Ist das da oben das was Excel nach dem Importieren daraus macht oder sind das die Daten wie sie von SiteCatalyst kommen?
 
In SiteCatalyst werden die Daten mit Komma dargestellt. z.B. 2,745 für Zweitausend...

Die Daten oben sind so, wie sie importiert werden.

Die CSV-Lösungen muss ich jetzt jedenfalls schwer in Erwägung ziehen, weil ich sonst anscheinend immer manuell die Kommazahlen korrigieren muss.

Porblem ist nur dass diese Lösung wieder mauellen Aufwand bedeutet und ich mindestens zwei Tage verlieren würde um alles neu zu verlinken mit Diagrammen S-Verweisen usw.

An der Stelle aber schon mal ein dickes Dankeschön für eure Mühe!
 
Hast du dich dann oben verschrieben oder warum wird bereits beim Export die Zahl 3500 nur als 3,5 und nicht als 3,500 dargestellt?

Denn nur in dem Fall das bei einer Tausenderzahl keine Nullen dran sind habe ich hier ein Problem, anderfalls klappt es bei mir wie oben geschrieben.
 
Ich wünschte ich hätte mich verschrieben ;)

Leider ist das tatsächlich so, dass 3,5 (ohne Nullen) in die Zelle geschrieben wird.
 
Schau mal ob du damit etwas anfangen kannst:

Visual Basic:
Sub zahl_format()
'Bildschirmanzeige ausschalten
Application.ScreenUpdating = False

'letzte Zeile in Spalte A suchen
zeilen% = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row

'letzte Spalte in Zeile 1 suchen
spalten% = Tabelle1.Cells(1, Columns.Count).End(xlToLeft).Column

'alle Spalten durchlaufen
For s% = 1 To spalten%

'alle Zeilen durchlaufen
    For z% = 1 To zeilen%
'wenn Komma in der Zelle vorkommt
        If InStr(1, Tabelle1.Cells(z%, s%), ",") Then
'Teil links inklusive Komma
        links$ = Left(Tabelle1.Cells(z%, s%), InStr(1, Tabelle1.Cells(z%, s%), ","))
'Teil rechts vom Komma
        rechts$ = Mid(Tabelle1.Cells(z%, s%), InStr(1, Tabelle1.Cells(z%, s%), ",") + 1, Len(Tabelle1.Cells(z%, s%)))
'Wert formatieren und in Zelle eintragen
        Tabelle1.Cells(z%, s%) = links$ & rechts$ & String(3 - Len(rechts$), "0")
        End If
    Next z%

Next s%

'Bildschirmanzeige wieder einschalten
Application.ScreenUpdating = True
End Sub

Da ich den genauen Ablauf nicht kenne wie du die Daten in Excel einliest, kann ich dir jetzt nicht sagen wo du das Makro am besten einbindest. Die Umwandlung klappt soweit ich es jetzt getestet habe so aber.
 
Wow, das ist ein toller Ansatz. Leider tut sich nichts bei mir wenn ich das Makro ausführe.

Mache ich das was falsch? Habe unter Ansicht das Makro angelegt und wollte es testweise auf einem bestimmten Reiter (NL - Holland) anwenden.

(Meine Mappe hat 15 Reiter mit verschiedenen Ländern. Ganz vorne habe ich eine Tabelle gebastelt die aus diesen ganzen Reitern, meist per S-Verweis, die gewünschten Informationen zieht.)

Die Daten aus SiteCatalyst werden in jeden Reiter im Bereich A1 bis W57 gezogen.

Vielleicht helfen die Informationen ja weiter!?

Finde ich nebenbei bemerkt super dass Leuten wie mir, die keine Ahnung von Makros haben, hier so toll geholfen wird!
 
VORSICHT: Dinge die per Makro geändert wurden lassen sich nicht mit "Bearbeiten Rückgängig" zurücksetzten!!

Ich habe es in meinem Beispiel alles auf "Tabelle1" geschrieben, dort werden also die Änderungen gemacht.

Um dir weiter zu helfen hätte ich jetzt erst 2 Fragen:
1) wie "sensibel" sind die Daten den mit denen du da arbeitest?
2) kannst du mir die Datei schicken und kannst du sie dann als 2000-er Version speichern?

Ansonsten ändere alles was jetzt "Tabelle1" heißt in "ActiveSheet" und (sofern nicht eh schon geschehen) kopiere den Code in das Register "DieseArbeitsmappe", den er darf nicht innerhalb eines bestimmten Arbeitsblattes stehen.

Dann kannst du diesem Makro eine Tastenkombination zuweisen und es immer wenn du in einer bestimmten Tabelle stehst darüber starten.

Beim ermitteln der letzten Zeile/Spalte endet das Makro immer wenn es auf eine leere Zelle trifft! Es du mit dieser Abbruchbedingung klar kommst musst du testen.
 
Habe den Code auf "AvtiveSheet" geändert, da wo Tabelle1 stand. Leider ohne Veränderung. Es passiert nichts.
Zu Deinen Fragen: es sind sensible Daten, aber ich habe eine Beispielsdatei erstellt und als 2000er Version gespeichert. Wie soll ich Dir diese zukommen lassen? Über das Forum kann ich ja keine Dateien verschicken.
 

Neue Beiträge

Zurück