PQ - Altersunterschied zwischen Datum vor und nach 1900
13.11.2024 13:55:20
Christian
ich hoffe einer von euch hat eine Lösung für mich. Ich nutze folgenden M-Code um u.a. 3 Altersberechnungen durchzuführen.
Jetzt hat sich in Spalte [f] das Datum 25.10.1892 (als negative Zahl vorliegend) eingeschlichen. Mit der Datedif Formel konnte ich ja einfach 4000 Jahre bzw. 1461000 Tage addieren, aber wie mache ich das hier? (Das Datum wurde bereits in einem frühreren Code in durch Ändern ins Format Datum in eine negative Zahl umgewandelt).
Außerdem würde ich euch bitten, euch mal die Formel am Ende anzuschauen, die den Text mit MRS usw. ausgibt, auch die beinhaltet ja das Datum aus [f]. Ist es möglich dort dann wieder das Datum als 25.10.1892 auszugeben anstatt als negative Zahl?
Die Daten in Spalte [c] sind davon nicht betroffen, diese beginnen im Jahr 1914.
Wie geht das?
Danke
Christian
let
// Quelle aus dem aktuellen Arbeitsbuch abrufen
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
// Spaltentypen ändern und gleichzeitig null-Werte filtern
#"Gefilterte und Geänderte Typen" = Table.Buffer(Table.SelectRows(
Table.TransformColumnTypes(Quelle, {
{"a", type text},
{"b", type text},
{"c", type date},
{"d", type text},
{"e", type text},
{"f", type date}
}),
each ([c] > null) and ([f] > null) // Filter für nicht-null Werte
)),
// Zeilen sortieren nach Spalte5 alphabetisch
#"Sortierte Zeilen" = Table.Buffer(Table.Sort(#"Gefilterte und Geänderte Typen", {
{"e", Order.Ascending}
})),
#"Umbenannte Spalten2" = Table.RenameColumns(#"Sortierte Zeilen",{{"g", "k"}}),
#"Ersetzter Wert" = Table.ReplaceValue(#"Umbenannte Spalten2","site:www.imdb.com/title ","",Replacer.ReplaceText,{"k"}),
// Berechnung der Differenz in Jahren zwischen Spalte3 und Spalte6
HinzuJahre = Table.AddColumn(#"Ersetzter Wert", "g", each
let
JahrDiff = Date.Year([c]) - Date.Year([f]),
GeburtstagVorhanden = Date.From([c]) Date.From(Date.AddYears([f], JahrDiff))
in
if GeburtstagVorhanden then JahrDiff - 1 else JahrDiff
),
// Filter für Jahre 25
GefilterteJahre = Table.Buffer(Table.SelectRows(HinzuJahre, each [g] 25)),
// Berechnung der verbleibenden Tage
HinzuTage = Table.AddColumn(GefilterteJahre, "h", each
let
NaechsterGeburtstag = Date.AddYears([f], [g]),
VerbleibendeTage = Duration.Days([c] - NaechsterGeburtstag)
in
if VerbleibendeTage 0 then 0 else VerbleibendeTage
),
// Berechnung der Gesamtdifferenz in Tagen zwischen Spalte3 und Spalte6 und benennen als Tage2
HinzuTage2 = Table.AddColumn(HinzuTage, "i", each
Duration.Days([c] - [f]),
Int64.Type
),
// Hinzufügen der benutzerdefinierten Spalte ohne führende Nullen
Benutzerdefiniert = Table.AddColumn(HinzuTage2, "j", each
"MRS " & Text.From([i]) & " " &
Text.Replace(Text.Replace(Text.Replace([b], ":", ""), "?", ""), "/", "") & " (" & Text.From([c]) & ") - " &
[e] & " (" & Text.From([f]) & ") " &
Text.From([g]) & "-" & Text.From([h])
),
#"Neu angeordnete Spalten" = Table.ReorderColumns(Benutzerdefiniert,{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"})
in
#"Neu angeordnete Spalten"
Anzeige