CSV bearbeiten

Gast #6926108
Lesenswert?

Hi

Ich suche nach einer Lösung mit der ich folgenges hinbekomme:
In einem CSV, mit Doppelpunkt getrennt, steht zumeist in der ersten 
Spalte ein Betrag inkl. "€" Zeichen.
Aufgabe: Sollte davor ein anderer Text stehen, soll dieser, wieder mit 
Doppelpunkt getrennt, ans Ende der Zeile verschoben werden (oder 
Notfalls gelöscht werden). Ziel ist auf jeden Fall, dass in der ersten 
Spalte der Euro Betrag steht.

Beispiel:

abc 123€:Austria
34€ bcd:Auto
Hund:dfg 66€:Klaus
cf 4321€ qwe:Radio:PC

das Ergebnis sollte danach sein (Zeile 3):

abc 123€:Austria
34€ bcd:Auto
dfg 66€:Klaus:Hund
cf 4321€ qwe:Radio:PC


hat jemand einen Vorschlag?
Gast #6926171
Lesenswert?

So gut wie jede Programmiersprache kann CSV einlesen und dir ein Array 
oder ähnliches bereitstellen. Dann prüfst du alle Einträge entsprechend 
und schreibst es ins CSV zurück.

Verstanden? Fertigen Code gibts hier nicht.
#6926243
Lesenswert?

Servus Freddy,

ich würds mit Excel machen, wobei ich die gesamte Aufgabenstellung nicht 
vollständig verstanden habe bzw. das gewünschte Endergebnis.

Was sind die Spalten, wie lautet der Trenner der Spalte, Leerzeichen, 
Tab, Doppelpunkt?

Auch unklar:
Aus
Hund:dfg 66€:Klaus
soll
dfg 66€:Klaus:Hund
werden.

Soll dann aus
abc 123€:Austria
auch
123€:Austria:abc
werden?
Oder ist hier der : nach dem Hund ausschlaggebend, dass der Text nach 
hintern verschoben werden soll? Davon gehe ich meinem Ansatz jetzt mal 
aus, da du auf Zeile 3 extra hinweist.

Hier bewusst ohne VBA-Makros
Lies das erstmal ein, das Spalte A in jeder Zeile immer der gesamte 
Ausdruck steht.

Siehe Bild:
Erstmal den : suchen.      =FINDEN(":";A2)
Das € suchen:              =FINDEN("€";A2)
Feststellen ob, : vor €    =WENN(C2>B2;"Ja";"Nein")
Text teilen                =TEIL(A2;1;B2-1)
Text teilen                =TEIL(A2;B2+1;100)
Wieder zusammenbauen       =WENN(D2="Ja";VERKETTEN(F2;":";E2);"")

Gruß
Andi
Angehängte Dateien:
Gast #6926252
Lesenswert?

WIRO schrieb:
> Darf mehr als nur ein Text mit : getrennt davor stehen?
>   Hund:Katze:Maus:dfg 66€:Klaus
>
> Gruß
> WIRO

ja, kann vorkommen. alles sollte dann entweder nach hinten verschoben 
oder gelöscht werden:

dfg 66€:Klaus:Hund:Katze:Maus

oder eben nur

dfg 66€:Klaus


Schlaumaier schrieb:
> Das bekommst du sogar in Excel hin. ;) Sollte sogar ohne Makro gehen.

nein, das csv hat etwa 5 Millionen Zeilen
Gast #6926263
Lesenswert?

A. H. schrieb:
> ich würds mit Excel machen, wobei ich die gesamte Aufgabenstellung nicht
> vollständig verstanden habe bzw. das gewünschte Endergebnis.

Ich auch nicht, weil sein Beispiel nicht zum Fragetext passt:
FranticFreddy schrieb:
> Ziel ist auf jeden Fall, dass in der ersten Spalte der Euro Betrag steht.

Ich bin nicht der TO und habe das Problem auch nicht, finde Deinen 
Kommentar aber interessant. Du nutzt scheinbar "Finden()", magst Du Dein 
Beispiel mal als .xls hier reinstellen?
Moderator #6926323
Lesenswert?

Sid Greybeard schrieb:
> man sed

Guter Vorschlag.

Das Kommando
1
sed 's/\(^[^€]*\):\(.*\)/\2:\1/'

konvertiert die Eingabe
1
abc 123€:Austria
2
34€ bcd:Auto
3
Hund:dfg 66€:Klaus
4
cf 4321€ qwe:Radio:PC
5
Hund:Katze:Maus:dfg 66€:Klaus

wie gewünscht in
1
abc 123€:Austria
2
34€ bcd:Auto
3
dfg 66€:Klaus:Hund
4
cf 4321€ qwe:Radio:PC
5
dfg 66€:Klaus:Hund:Katze:Maus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren