Habe eine hoffendlich nicht zu blöde Frage (bin erstmals in der Excel
Newsgroup):
Ich muss viele Daten in Excel 97 weiterverarbeiten, wobei die Zahlen als
Dezimaltrennzeichen einen Punkt enthalten (=amerikanische Schreibweise).
Ich möchte jedoch nicht mit suchen und ersetzen oder sowas arbeiten sondern
Excel beibringen, dass der Punkt ein Dezimaltrennzeichen ist. Habe das nur
nirgendwo finden können.
Danke für Euren Tip!
Heinz
>Ich muss viele Daten in Excel 97 weiterverarbeiten, wobei die Zahlen als
>Dezimaltrennzeichen einen Punkt enthalten (=amerikanische Schreibweise).
>
>Ich möchte jedoch nicht mit suchen und ersetzen oder sowas arbeiten sondern
>Excel beibringen, dass der Punkt ein Dezimaltrennzeichen ist. Habe das nur
>nirgendwo finden können.
>
Also mir fallen da zwei Lösungsmöglichkeiten ein,
wovon bei der ersten nicht sicher ist, daß Sie funktioniert
und die zweite ist etwas komplizierter.
Mein erster Gedanke, wenn Du in der Systemsteuerung von Win95/98 auf
das amerikanische Sprachschema umschaltest könnte ich mir vorstellen,
daß Excel das erkennt und die Punkt als Kommas verwendet.
Der andere Gedanke ist der, daß man sich ein Makro schreibt, in dem
der ganze infragekommende Bereich Zelle für Zelle abgescannt wird und
dieser Punkt dann "ganz einfach" gegen ein Komma ausgetauscht wird.
Ich stelle es mir so vor die Zellen ( eine nach der anderen) von
einem Makro einzulesen, den String Zeichen für Zeichen nach dem Punkt
abzufragen ung ggf gegen das Komma zu ersetzen und die Zahl wider
zurückzuschreiben. Müßte gehen.
Vielleicht weiß aber jemand anders einen einfacheren Weg, ich denke
mir den müße es geben.
HTH Ottmar
Is aber nicht so ganz einfach zu realisieren.
Vielleicht gehts auch einfacher ?
das ist glaub ich eine wichtige frage, um dir gescheit weiterhelfen zu können.
Bye
Ulli.
Heinz Peter schrieb:
> Hallo
>
> Habe eine hoffendlich nicht zu blöde Frage (bin erstmals in der Excel
> Newsgroup):
>
> Ich muss viele Daten in Excel 97 weiterverarbeiten, wobei die Zahlen als
> Dezimaltrennzeichen einen Punkt enthalten (=amerikanische Schreibweise).
>
> Ich möchte jedoch nicht mit suchen und ersetzen oder sowas arbeiten sondern
> Excel beibringen, dass der Punkt ein Dezimaltrennzeichen ist. Habe das nur
> nirgendwo finden können.
>
> Danke für Euren Tip!
>
> Heinz
--
Microsoft MVP für Excel
Hallo Ottmar
> >Ich muss viele Daten in Excel 97 weiterverarbeiten, wobei die Zahlen als
> >Dezimaltrennzeichen einen Punkt enthalten (=amerikanische Schreibweise).
>
> Also mir fallen da zwei Lösungsmöglichkeiten ein,
>
> wovon bei der ersten nicht sicher ist, daß Sie funktioniert
>
> und die zweite ist etwas komplizierter.
>
> Mein erster Gedanke, wenn Du in der Systemsteuerung von Win95/98 auf
> das amerikanische Sprachschema umschaltest könnte ich mir vorstellen,
> daß Excel das erkennt und die Punkt als Kommas verwendet.
Habe das ausprobiert (habe übrigens NT4). Das Ganze ist wieder mal MS-üblich
verzwickt: Wenn man in den Ländereinstellungen unter Zahlen >
Dezimaltrennzeichen einen Punkt anstelle des Kommas eingibt, hat man das
Gewünschte wenn man neue Tabellen manuell eingibt (also der Punkt ist das
Dezimaltrennzeichen).
Ich importiere meine Daten jedoch als ASCII-Textfile (TXT oder CSV). Hier
ist es genau wie vorher. Wenn man aber das Gebietsschema auf English (USA)
umstellt, gehts.
Leider bewirkt das auch eine Umstellung von Zahlen und Datumsdarstellung in
anderen Programmen (zb Word), was eigentlich nicht erwünscht ist.
Kennt niemend eine Umschaltmöglichkeit nur innerhalb Excel?
Die zweite Variante (siehe unten) scheidet ohnehin aus, weil Excel so
bescheuert ist, dass es die Dezimalpunkte in den importierten Zahlen einfach
ignoriert, die Zahlen als Integer-Zahlen importiert und dann Punkte als
Tausender-Trennzeichen (!) setzt oder bei manchen zahlen einfach annimmt,
dass es sich um ein Datum handelt... Wer hat wohl diesen Importfilter
geschrieben?
Also, wer hat noch einen Tip für mich?
Vielen Dank!
Heinz
Hallo Heinz Peter,
an den .csv Dateien haben sich schon viele Anwender die Zähne ausgebissen. Hier
nur eine Lösung, wie man eine Englische .csv Datei importieren
kann.
Sub CSVEnglish()
Dim Zeileninhalt$, dateiname$, Zieltabelle$
Dim CSVArray, Zeile&
dateiname = "c:\Eigene Dateien\test1.csv"
Zieltabelle = "Tabelle2"
If Dir$(dateiname) = "" Then Exit Sub
Application.ScreenUpdating = False
With Sheets(Zieltabelle)
.Cells.ClearContents
Open dateiname For Input As #1
Do While Not EOF(1)
Line Input #1, Zeileninhalt
Zeile = Zeile + 1
CSVArray = SplitEngl(Zeileninhalt)
.Range(Cells(Zeile, 1), Cells(Zeile, _
UBound(CSVArray))) = CSVArray
Loop
Close
End With
Application.ScreenUpdating = True
End Sub
Function SplitEngl(Zeile As String) As Variant
Dim a(), Wert, Spalte
Zeile = Zeile & ","
Do While InStr(1, Zeile, ",") <> 0
Spalte = Spalte + 1
ReDim Preserve a(1 To Spalte)
Wert = Left$(Zeile, InStr(1, Zeile, ",") - 1)
If IsNumeric(Wert) Then
a(Spalte) = Val(Wert)
Else
a(Spalte) = Wert
End If
Zeile = Right$(Zeile, Len(Zeile) - InStr(1, Zeile, ","))
Loop
SplitEngl = a
End Function
MfG
Michael