Discussion:
Zahlenformat zwischen US-Format und deutschem-Format umsetzen
(zu alt für eine Antwort)
BRoemer
2007-06-20 12:28:00 UTC
Permalink
Hallo,

wir bekommen viele Excel-Dateien aus den USA wo die Zahlen in dem dortigen
Format "(1234.10)" (Zahl und Klammer sind rot im Original) formatiert sind.
Mit der deutschen Excel-Version (Excel 2002) geöffnet, macht Excel daraus die
folgende benutzerdefinierte Formatierung "#.##0,00_€;[rot]-#.##0,00_€".
So formatierte Zahlen passen häufig nicht in die Spalten, sodaß viele Zahlen
sich hinter einem "#######" verbergen. Das Problem ist also, daß die Zahlen
nicht zu sehen sind. Man müßte überall die Spaltenbreiten anpassen; sehr
aufwenig; ein Anwenden der "optimalen Spaltenbreite" auf das gesamte Blatt
zerstört dessen Struktur.
1. Gibt es eine geschicktere Möglichkeit die Spaltenbreite anzupassen ?
oder
2. gibt es eine Möglichkeit Excel zu sagen, wie es die
Zahlenformatkonvertierung durchführen soll, also z.B. vom Amerikanischen
(1234.10) ins Deutsche -1234,10 zu konvertieren?
Je nach Ursprung der Exceldatei die Ländereinstellung in den
Systemeinstellungen von Windows zu ändern geht natürlich. Das hin und
herschalten ist aber doch recht umständlich.

Gruß BR
Alexander Wolff
2007-06-20 12:48:58 UTC
Permalink
Designfragen mit solchem Hintergrund sind unlösbar. Also bleibt nur hin- und
herschalten (vielleicht mitels http://michael-schwimmer.de/xlMain.htm Nr.
51) oder nicht ausgereizte Spaltenbreiten (sehr ärgerlich!).

Andererseits:

Da die Anwendung nur zwischen DE und US zu wechseln scheint, könntest Du
auch die notwendigen Spaltenbreiten messen und mittels VBA manuell toggeln
(mit Short-Cut). Wenn das Blatt auf DE eingestellt ist, toggelt er zu US
u.u.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Alexander Wolff
2007-06-20 13:03:57 UTC
Permalink
Das Format aller betroffenen Zellen kann man natürlich auch ändern:

...
For i = 1 to 1000
For j = 1 to 256
If Cells(i, j).NumberFormat = "#.##0,00" Then _
Cells(i, j).NumberFormat = "0,00"
' hier zweites und weitere mögliche Formate behandeln
Next
Next
...

und diese Prozedur genauso umgekehrt vorsehen (ungetestet).

Das jeweilige Format bekommst Du selbst mit

Sub t()
MsgBox ActiveCell.NumberFormat
End Sub

genannt. Also noch ein Weg, wie Du es lösen könntest.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
BRoemer
2007-06-21 14:13:00 UTC
Permalink
Post by Alexander Wolff
....
For i = 1 to 1000
For j = 1 to 256
If Cells(i, j).NumberFormat = "#.##0,00" Then _
Cells(i, j).NumberFormat = "0,00"
' hier zweites und weitere mögliche Formate behandeln
Next
Next
....
und diese Prozedur genauso umgekehrt vorsehen (ungetestet).
Das jeweilige Format bekommst Du selbst mit
Sub t()
MsgBox ActiveCell.NumberFormat
End Sub
genannt. Also noch ein Weg, wie Du es lösen könntest.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Hallo
vielen Dank für die Hinweise.
Folgendes Macro bringt ein optimales Ergebnis:

For i = 1 To 1000
For j = 1 To 256
If Cells(i, j).NumberFormat = "#,##0.00_);[Red](#,##0.00)" _
Then Cells(i, j).NumberFormat = "#,##0.00;[Red]-#,##0.00"
Next
Next

Suchen und Ersetzen geht auch in Excel 2002, es erwischt aber seltsamerweise
nicht alle Zellen.

Gruß BR

Dieter Schulz
2007-06-20 13:01:27 UTC
Permalink
Post by BRoemer
Hallo,
wir bekommen viele Excel-Dateien aus den USA wo die Zahlen in dem dortigen
Format "(1234.10)" (Zahl und Klammer sind rot im Original) formatiert sind.
Mit der deutschen Excel-Version (Excel 2002) geöffnet, macht Excel daraus die
folgende benutzerdefinierte Formatierung "#.##0,00_€;[rot]-#.##0,00_€".
So formatierte Zahlen passen häufig nicht in die Spalten, sodaß viele Zahlen
sich hinter einem "#######" verbergen.
[..]

Ich habe kein Excel 2002, daher die Frage: Kann Excel 2002 Formate
suchen/ersetzen?
in Excel 2003 kann man mit Bearbeiten|Ersetzen auch Zellformate
ersetzen. Wenn das auch schon in Excel 2002 implementiert war, wäre ein
einmaliges Ersetzen in jeder US-Datei evtl. die einfachste Lösung...

MfG
Dieter
Loading...