Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

PQ - Altersunterschied zwischen Datum vor und nach 1900

Forumthread: PQ - Altersunterschied zwischen Datum vor und nach 1900

PQ - Altersunterschied zwischen Datum vor und nach 1900
13.11.2024 13:55:20
Christian
Hallo,

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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dein M-Code ohne Beispieldatei ist wenig hilfreich ...
13.11.2024 18:35:08
neopa C
Hallo Christian,

... Du mußt dazu nicht Deine Originaldatei einstellen. Eine Auszug aus dieser mit durch Dummydaten ersetzten Originalnamen sollte reichen.

Gruß Werner
.. , - ...
Im Anhang habe...
13.11.2024 18:39:45
Case
Moin Christian, :-)

... ich dir mal etwas zum "spielen" eingestellt: ;-)
https://www.herber.de/bbs/user/173582.xlsx

Ist jetzt nur ein Ansatz. ;-)

Im dritten Beispiel ist das Datum in eine Zahl (negativ) umgewandelt und zurück. ;-)

Servus
Case
Anzeige
Problem hat sich gelöst
13.11.2024 19:16:20
Christian
Hallo ihr beiden trotzdem danke für eure Mühe.

Ich hatte eine Möglichkeit gefunden, die csv Dateien, die als Datenquelle dienen mit deutschen anstatt englischen Monatsnamen herunterzuladen, damit brauchte ich dann das Datum nicht mehr umzuwandeln. PQ hat das Datum vor 1900 erkannt und es hat selbst zu meiner Verwunderung dann auch mit meinem bisherigen M Code geklappt.

Blöderweise hab ich es erst gemerkt, als ich schon ewig und 3 Tage gefühlt an einer brauchbaren Bsp Datei gehangen habe.

Und Case auch nochmal danke für deine Beispiele, sie waren sehr aufschlussreich.

Trotzdem danke und noch einen schönen Abend
Christian
Anzeige

Forumthreads zu verwandten Themen

Anzeige