17.7k Aufrufe
Gefragt in Tabellenkalkulation von halfstone Profi (18.3k Punkte)
Hi an die Excelprofis,

ich dreh noch durch. Eigentlich dachte ich, ich hätte das schon mal gefragt, finde es aber in dem Fall nicht.

Hier also mein Problem, ich bekomme Daten von einer amerikanischen Webseite z.B.:

bla,1.4484,5,15,0.3333333333333333,96.56
blub,1.44808,20,184,0.10869565217391304,7.87
bla,1.447586,3,151,0.019867549668874173,9.586662251655628
blub,1.447439,10,80,0.125,18.0929875
bla,1.447022,7,541,0.012939001848428836,2.67471719038817
blub,1.446748,4,40,0.1,36.1687
bla,1.44643,8,43,0.18604651162790697,33.63790697674419
blub,1.446161,2,4,0.5,361.54025
bla,1.443954,12,45,0.26666666666666666,32.08786666666667


Die werden dann immer so importiert:

bla 14.484 5 15 0.3333333333333333 96.56
blub 144.808 20 184 0.10869565217391304 Jul 87
bla 1.447.586 3 151 0.019867549668874173 9.586.662.251.655.620
blub 1.447.439 10 80 0.125 180.929.875
bla 1.447.022 7 541 0.012939001848428836 267.471.719.038.817
blub 1.446.748 4 40 0.1 361.687
bla 144.643 8 43 0.18604651162790697 3.363.790.697.674.410
blub 1.446.161 2 4 0.5 36.154.025
bla 1.443.954 12 45 0.26666666666666666 3.208.786.666.666.660


an den letzten Zahlen in jeder Zeile kann man das Problem sehr genau erkennen. Das sind eigentlich Währungsangaben, also nicht 9.586.662.251.655.620 sondern 9,586662251655620 Dollar.

Ich hab schon versucht in den Einstellungen die Einstellung "Trennzeichen vom Betriebssystem übernehmen" abzändern aber es kommt immer das gleiche falsche Ergebnis raus.

Was mache ich falsch?

Viele Grüße und Danke schon mal

Fabian

17 Antworten

0 Punkte
Beantwortet von halfstone Profi (18.3k Punkte)
Hi rainberg,

so jetzt hab ichs mal getestet und mit den vorhandenen Beispieldaten geht das auch wunderbar.

Da meine Daten natürlich anders aussehen, also noch mit einem Header und so Zeugs kannst du mir sicher sagen wo man in deinem Macro den Bereich eingrenzt in dem die Ersetzungen gemacht werden sollen.

Ich bräuchte sowas wie, erst ab Zeile x und nur die Spalten B, C und F.

Leider kann hier sogar das x sich verändern da drüber die Tage eines Monats angezeigt werden die ja mal 30 mal 31 sind. Darunter kommen dann erst Daten die angepasst werden müssen in den Spalten B, C und F die aber auch eine Überschrift haben.

Zum besseren Verständnis poste ich hier mal den Macrocode, daran kann man glaube ich ganz gut erklären was wo gemacht wird.


[code]Sub Makro1()
'
' Makro1 Makro
'
' Tastenkombination: Strg+a
'
    Columns("A:A").Select
    Selection.Replace What:=",", Replacement:="#", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="#", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
        1), Array(6, 1)), TrailingMinusNumbers:=True
End Sub[/code]


Vielen Dank schon mal

Fabian
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Fabian,

mein Vorschlag beruht und funktioniert natürlich nur auf der Grundlage Deiner Ausgangsinformationen.

Er funktioniert nicht mit den im Nachhinein gestellten Zusatzforderungen (Kopf, dynamische Zeile, Spalten-Teilbereich).
Da scheidet "Text in Spalten " aus.

Das lässt sich zwar auch mit VBA erledigen, aber das überlasse den Makrospezialisten unter uns.

Vielleicht noch ein Hinweis.
Es könnte einem Programmierer von großer Hilfe sein, wenn er eine Originaldatei von Dir erhält, damit er genau weis wovon Du sprichst, welche Formate vorliegen und eine passende Testumgebung zur Verfügung hat.

Gruß
Rainer
0 Punkte
Beantwortet von halfstone Profi (18.3k Punkte)
Hi rainberg,

da hast du sicher Recht, ich muss dazu nur die Orginaldatei fast komplett von den Daten befreien da das Daten sind, die ich nicht weitergeben darf.

Dein Macro und der Hinweis von KJG17 haben mir aber gezeigt, dass es überhaupt geht, vielen Dank dafür schon mal.

Hier also die bereinigte csv Datei:

www.supportnet.de/download/halfstone1.csv

Interessant sind hier die Spalten B,E und F und die Spalten sind noch länger als 100 Einträge so bis zu 500-1000 Einträge.

Viele Grüße

Fabian
0 Punkte
Beantwortet von kjg17 Profi (34.4k Punkte)
Moin Fabian,

das war wohl nichts mit deiner Beispiel-Tabelle, die wurde durch die Bearbeitung bereits wieder von Excel 'entstellt'.

Gehe mal so vor:

Excel(2007)-Optionen / Erweitert / Optionen bearbeiten -> Haken raus bei 'Trennzeichen von Betriebssystem übernehmen' bei 'Dezimaltrennzeichen' das Komma durch einen Punkt ersetzen und bei 'Tausenderkennzeichen' den Eintrag löschen, eventuell gibt es sonst Probleme, da ja das Komma als Spaltentrennzeichen in der CVS benutz wird. (Kannst du aber auch mal testen.) Anschließend öffnest du die Original-CVS und kannst sie ohne diese automatische Entstellungen durch Excel weiterverarbeiten.

Anschließend musst du aber wieder den Haken bei 'Trennzeichen von Betriebssystem übernehmen' setzen, weil sonst die veränderte Einstellung auch auf deine 'normalen' Excel-Tabellen angewendet wird.

Gruß
Kalle
0 Punkte
Beantwortet von kjg17 Profi (34.4k Punkte)
Nachtrag:

Ich habe gerade gesehen, dass du das mit dem mit dem Trennzeichen von Betriebssystem übernehmen' ja schon erfolglos getestet hattest. Wenn die Erfolglosigkeit nicht nur daran lag, dass du übersehen hast auch noch die voreingestellten Zeichen selbst abzuändern, müsstest du gleichen Effekt eigentlich auch erzielen, wenn du vor dem Starten von Excel die Regions- und Spracheinstellungen von 'Deutsch' auf 'Englisch (USA)' umstellst, diese werden dann automatisch mit den entsprechenden Zahlen- und Datums-Formaten von Excel verwendet.

Gruß
Kalle
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Fabian,

wie Kalle schon schreibt, die geposteten Daten sind unbrauchbar.

Habe noch einen anderen Versuch gemacht, der auch funktioniert.

- Ländereinstellungen auf " Englisch(USA) " stellen
- die von der Webseite kopierten Daten in Excel einfügen
- Funktion " Text in Spalten " anwenden

Damit werden die Dezimalzahlen richtig übernommen (Dezimaltrenner ist allerdings der Punkt)

Wenn Du diese Datei abspeicherst, die Ländereinstellungen wieder auf " Deutsch(Deutschland) " stellst und die Datei wieder öffnest, werden die Punkte automatisch als Komma angezeigt.

Mehr kann ich Dir zu diesem Thema leider nicht bieten.

Gruß
Rainer
0 Punkte
Beantwortet von halfstone Profi (18.3k Punkte)
uiuiuiuiui peinlich peinlich,

hab jetzt auch noch mal lange mit den Daten rumgespielt, in einen Editor mit UTF8 geladen und dort dann rauskopiert...

Excel springt bei mir immer beim Start auf die Ländereinstellung DE, das lässt sich auch durch die Option "nicht automatisch anpassen" nicht ändern...

Also hab ich nochmal in den Ländereinstellungen von Excel selbst rumprobiert und wenn man da "nicht vom Betriebssystem übernehmen" macht und die Zeichen , und . einfach rumdreht bekomme ich auf jeden Fall mal Zahlen, die durch nur eienn Punkt getrennt werden also man erkennen kann was das eigentlich für Zahlen sind.

Wenn ich dann noch die Option "Trennzeichen vom Betriebssystem übernehmen" wieder an mache sind das ganz normale Zahlen mit Komma als Dezimaltrennzeichen.

Auch nicht wirklich praktisch dieser Weg, aber jetzt habe ich schon mal zwei Wege wie ich überhaupt zu ordentlichen Zahlen komme.

Vielen Dank euch beiden, jetzt weiß ich nur nicht wem ich den Lösungspunkt geben soll :-(

Gruß Fabian
...