HERBERS Excel-Forum - das Archiv

Thema: Daten umwandeln mit PQ - letzter statt erster Tag

Daten umwandeln mit PQ - letzter statt erster Tag
Christian
Hallo,

ich würde euch gerne um eure Hilfe bitten bei folgender Datei:

https://www.herber.de/bbs/user/168674.xlsx

wie ihr seht, ich habe PQ genutzt um Daten vom Format JJJJ-MM-TT in das Format TT.MM.JJJJ umzuwandeln.
Jetzt nur mein Problem, wenn kein vollständiges Datum vorhanden ist, wäre es schön, wenn nicht der erste, sondern der letzte Tag genommen wird.
Also z.B. in Zeile 4 den 30.4.98 statt den 1.4.98 oder in Zeile 9 den 31.12.89 statt den 1.1.89

Wie mache ich das?
Ich bitte wenn möglich um eine PQ Lösung.

Danke für eure Mühe
Christian
AW: Daten umwandeln mit PQ - letzter statt erster Tag
Yal
Hallo Christian,

ohne die Datei geöffnet zu haben: wenn Du einmal den letzten Tag desselben Monats und einmal den letzten Tag des vorigen Monats haben möchtest, müsstest Du eine Regel bereitstellen, wie diese Fälle unterschieden werden. Allein wird Excel keine Entscheidung treffen können.

VG
Yal

AW: Daten umwandeln mit PQ - letzter statt erster Tag
Christian
Hallo Yal,

ich befürchte du hast mein Anliegen falsch verstanden. Vom letzten Tag des vorherigen Monats war nie die Rede. Schau dir bitte meine Datei an.

Gruß
Christian
AW: Daten umwandeln mit PQ - letzter statt erster Tag
Yal
ach genau, ich habe überlesen:
aus diese Zeile
"Also z.B. in Zeile 4 den 30.4.98 statt den 1.4.98 oder in Zeile 9 den 31.12.89 statt den 1.1.89"

muss ich ableiten:
fehlt den Tag -> Monatsende
fehlt den Monat (und tag) -> Jahresende.

Es fehlt auch die csv-Quelledatei. Kommt wohl aus dem Netz. Der Link würde reichen (wenn nicht hinter Paywall).

VG
Yal
AW: Daten umwandeln mit PQ - letzter statt erster Tag
Yal
Hallo Christian,

ich habe einfach das Ergebnis genommen, um eine Quelle zu bauen ("Tabelle1"). Ich hoffe, Du kommst damit zurecht.

Ich fürchte, man kommt nicht darum, in Einzelteil zu zerlegen, um mit verschachtelte If zu behandeln.

Es sieht so aus
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Geänderter Typ", "Neuer Tag", each 

if [Jahr] = null then
null // fehlt das Jahr, dann nichts
else
if [Monat] =null then
#date([Jahr], 12, 31) // fehlt der Monat, dann Ende des Jahres
else
if [Tag]= null then
Date.EndOfMonth(#date([Jahr], [Monat],1)) // fehlt der Tag, dann Ende des Monats
else
#date([Jahr], [Monat], [Tag]) // fehlt nichts, dann so übernehmen
),
https://www.herber.de/bbs/user/168679.xlsx

VG
Yal
AW: Daten umwandeln mit PQ - letzter statt erster Tag
Christian
Hallo Yal,

hat ein bisschen gedauert bis ich den "Dreh raus" hatte, aber ich denke ich habe es geschafft es in meine Mappe einzubauen.
Es sieht jetzt so aus:

let

Quelle = Csv.Document(File.Contents("C:\Users\chris\Downloads\Filme1.csv"),[Delimiter=",", Columns=17, Encoding=65001, QuoteStyle=QuoteStyle.None]),
#"Höher gestufte Header" = Table.PromoteHeaders(Quelle, [PromoteAllScalars=true]),
#"Geänderter Typ" = Table.TransformColumnTypes(#"Höher gestufte Header",{{"Position", Int64.Type}, {"Const", type text}, {"Created", type date}, {"Modified", type date}, {"Description", type text}, {"Title", type text}, {"URL", type text}, {"Title Type", type text}, {"IMDb Rating", Int64.Type}, {"Runtime (mins)", Int64.Type}, {"Year", Int64.Type}, {"Genres", type text}, {"Num Votes", Int64.Type}, {"Release Date", type text}, {"Directors", type text}, {"Your Rating", type text}, {"Date Rated", type text}}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Geänderter Typ",{"Created", "Modified", "Description", "URL", "IMDb Rating", "Runtime (mins)", "Year", "Genres", "Num Votes", "Directors", "Your Rating", "Date Rated"}),
#"Duplizierte Spalte" = Table.DuplicateColumn(#"Entfernte Spalten", "Release Date", "Datum"),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Duplizierte Spalte", "Datum", Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), {"Jahr", "Monat", "Tag"}),
#"Geänderter Typ1" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"Jahr", Int64.Type}, {"Monat", Int64.Type}, {"Tag", Int64.Type}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Geänderter Typ1", "Neuer Tag", each if [Jahr] = null then null else if [Monat] =null then
#date([Jahr], 12, 31) else if [Tag]= null then Date.EndOfMonth(#date([Jahr], [Monat],1)) else #date([Jahr], [Monat], [Tag])),
#"Entfernte Spalten1" = Table.RemoveColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"Jahr", "Monat", "Tag", "Release Date"}),
#"Geänderter Typ2" = Table.TransformColumnTypes(#"Entfernte Spalten1",{{"Neuer Tag", type date}})
in
#"Geänderter Typ2"


auf jeden Fall vielen Dank für deine viele Mühe und ein schönes Wochenende
Christian
AW: Daten umwandeln mit PQ - letzter statt erster Tag
Christian
Hallo Yal,

ja genau, so war es gemeint, sorry das ich gerade etwas unfreundlich geantwortet habe, ich schaue dann mal wie ich dir die Datei zur Verfügung stellen kann.
Oder würde dir das hier eventuell schon reichen,

https://www.herber.de/bbs/user/168676.xlsx

das sind die Daten die ich umwandeln will, wie sie umgewandelt werden sollen, habe ich ja gesagt.

Der Rest der CSV Datei sind nur Spalten die ich vor dem Umwandeln gelöscht habe.

Sag bitte Bescheid falls du die CSV Datei trotzdem brauchst.

Gruß
Christian