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

Datumsdifferenzen mit PQ berechnen

Forumthread: Datumsdifferenzen mit PQ berechnen

Datumsdifferenzen mit PQ berechnen
07.06.2025 19:57:34
Christian
Hallo,

würde mich freuen, wenn ihr mir helft.

Wie kann ich auf Grundlage der Spalten A-C mit PQ 3 neue Spalten erzeugen, in denen das steht, was ich in den ersten Zeilen der Spalten D-F angedeutet habe.

Danke
Christian

https://www.herber.de/bbs/user/177695.xlsx
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumsdifferenzen mit PQ berechnen
07.06.2025 20:24:24
Eifeljoi 5
Hallo

Es könnte so etwa aussehen: 24 J, 11 Mo, 12 T
let in

Table.AddColumn(Table.TransformColumnTypes(Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],{{"Spalte2", type date}, {"Spalte1",
type date}}), "Benutzerdefiniert", each let GT = Duration.Days([Spalte1] - [Spalte2]),J = Number.RoundDown(GT / 365),RJ = GT -
(J * 365),Mo = Number.RoundDown(RJ / 30),T = RJ - (Mo * 30)in Text.From(J) & " J, " & Text.From(Mo) & " Mo, " & Text.From(T) & " T")
Anzeige
AW: Datumsdifferenzen mit PQ berechnen
07.06.2025 22:47:47
Christian
Hallo Eifeljoi,

erstmal vielen Dank. Aber wie ich sagte, die Spalten A bis C sind die die existieren, Spalte D bis F war wie ich sagte das, was ich durch PQ erzeugen wollte. Leider hat das wenig mit deiner Lösung zu tun.

Gruß
Christian
Im Anhang habe...
07.06.2025 21:23:47
Case
Moin Christian, :-)

... ich dir mal etwas in PQ erstellt: ;-)
https://www.herber.de/bbs/user/177696.xlsx

Habe nur mit deinen beiden ersten Spalten gearbeitet. ;-)
In tblErg_2 ist die Spalte "JahrTag" aus Spalte1 und Spalte2 berechnet. Geht natürlich einfacher. Die Spalten Jahre und Resttage mit Komma kombinieren. Wenn du aber nur diese Spalte berechnen willst, hast du einen Ansatz: ;-)

Oder du nimmst einfach deine Spalte mit rein und lässt das weg. ;-)

Servus
Case
Anzeige
AW: Im Anhang habe...
07.06.2025 22:54:51
Christian
Hallo Case,

erstmal vielen Dank.
Ich dachte, da die Spalte die du JahrTag genannt hast sowieso bereits existiert, wäre es das einfachste das Jahr und die Resttage da zu extrahieren. Wieder was gelernt.
Aber eins kann ich gerade nicht so ganz nachvollziehen. In welchem deiner Schritte werden die englischen Monatsnamen in deutsche umgewandelt?
Oder kann PQ das automatisch?

Sieht soweit super aus, werde mich dann mal ans übertragen in die Originaldatei begeben und mich dann wieder melden.

Danke
Christian
Anzeige
hat geklappt, danke owT
08.06.2025 01:12:17
Christian
Hier greift...
08.06.2025 10:34:52
Case
Moin Christian, :-)

… der Automatismus von Excel/PQ - bezogen auf die lokalen Systemeinstellungen des PC. ;-)

Mit "Table.TransformColumnTypes - type date" wandle ich in ein Datum um. Deine lokalen Einstellungen machen dann daraus z. B. 20.07.1983. Das ist nur die Ansicht. Für Excel/PQ bleibt das intern die Zahl 30517. ;-)

Dann gibt es bei "Table.TransformColumnTypes" noch den Parameter "optional culture". Der greift aber nur, wenn die Quelldaten Text sind - weil PQ beim Text zu Datum eine "Kultur" braucht, um zu wissen, was 06/07/2024 z. B. bedeutet (Juli oder Juni?). ;-)
https://learn.microsoft.com/en-us/powerquery-m/table-transformcolumntypes

In dem Zusammenhang steht auch "Datei - Optionen und Einstellungen - Abfrageoptionen - Regionale Einstellungen". ;-)

Bei Datum muss man also unter Umständen etwas aufpassen. ;-)

Servus
Case
Anzeige
AW: Hier greift...
08.06.2025 12:28:58
Luschi
Hallo Case,

habe gerade Deine PQ-Lösung in eines meiner Projekte übernommen; mußte aber feststellen, daß die Resttage noch nicht genau berechnet werden:
28.02.2000 bis 01.03.2004
Dein Ergebnis: 4 Jahre, 2 Tage - es sollten aber 4 Jahre, 3 Tage sein, da 2 x der 29.02 einfließen.

Gruß von Luschi
aus klein-Paris


Anzeige
Es sollte...
10.06.2025 12:55:44
Case
Moin Luschi, :-)

… - ja mit dem "sollte" habe ich so meine Probleme: ;-)

  • Bambi sollte nicht erschossen werden. (Ist aber im Film passiert.) ;-)

  • Man sollte mehr Sport treiben und mehr Gemüse essen. (Fleisch ist mein Gemüse - also passt doch alles.) ;-)

  • Mein Konto sollte nie ins Minus rutschen. (Da sage ich jetzt mal nichts.) ;-)

  • Ich sollte nicht immer zwei Finger breit Whisky im Glas einschenken. (Bei Cognac mache ich das auch - also Gleichstand.) ;-)

  • Man sollte öfter mal einen Gang runterschalten. (Hab ich gemacht - jetzt fahr ich im Leerlauf durchs Leben.) ;-)

  • Man sollte vernünftig bleiben. (Hab ich versucht. Hat sich komisch angefühlt. Nie wieder.) ;-)

  • Man sollte sich nicht über Kleinigkeiten aufregen. (Aber wenn der Ketchup-Deckel wieder verklebt ist, IST KRIEG.) ;-)


  • Ich sehe das so: ;-)
    Zwischen 28.02.2000 und 01.03.2004

    2000 - Schaltjahr = 366 Tage (Date.AddYears berücksichtigt Schaltjahre)
    2001 - 365 Tage
    2002 - 365 Tage
    2003 - 365 Tage
    = 1461 Tage bis 28.02.2004

    29.02.2004 - +1 Tag
    01.03.2004 - +1 Tag
    1461 Tage + die 2 Resttage = 1463 Gesamttage

    Dass "Date.AddYears" prima funktioniert, sehe ich z. B. hier:
    let
    
    Quelle = Table.FromRecords(
    {
    [Jahr = "29-02-2000"]
    }
    ),
    TypeG = Table.TransformColumnTypes(Quelle, {{"Jahr", type date}}),
    Return1 = Table.AddColumn(TypeG, "Plus 1 Jahr", each Date.AddYears([Jahr], 1)),
    Return2 = Table.AddColumn(Return1, "Plus 2 Jahre", each Date.AddYears([Jahr], 2)),
    Return3 = Table.AddColumn(Return2, "Plus 3 Jahre", each Date.AddYears([Jahr], 3)),
    Return4 = Table.AddColumn(Return3, "Plus 4 Jahre", each Date.AddYears([Jahr], 4))
    in
    Return4

    Ausgabe:
    Jahr Plus 1 Jahr Plus 2 Jahre Plus 3 Jahre Plus 4 Jahre
    29.02.2000 28.02.2001 28.02.2002 28.02.2003 29.02.2004

    Vielleicht liege ich auch komplett daneben, aber im Forum beantworte ich Fragen des Themenerstellers. Er fragt nach, oder ist zufrieden. Damit ist die Sache für mich dann eigentlich erledigt. Für lange Endlosdiskussionen habe ich in der Regel keine Lust. ;-)

    Servus
    Case
    Anzeige
    AW: Hier greift...
    10.06.2025 14:15:41
    BoskoBiati
    Hi Luschi,

    mir stellen sich zwei Fragen:
    1. Werden die Tage inklusive Start- und Enddatum gerechnet, nur Starttag oder nur die Tage zwischen den beiden Grenzwerten?
    a. Start- u. Enddatum sind inkludiert: ergibt 1464Tage
    b. nur eines der Datumswerte wird einbezogen: 1463Tage
    c. Start- und Enddatum bleiben außen vor: 1462Tage
    2. Wie wird ein Jahr in dieser Rechnung definiert, mit 365 oder 365,25 Tagen?
    ergibt 4Jahre und für
    a. 4d bzw. 3d
    b. 3d bzw. 2d
    c. 2d bzw. 1d

    Datedif z.B. rechnet mit "d" nach b (Ende-Start), Datedif mit "yd" mit 365,25Tagen.
    Jetzt kann jeder für sich selbst entscheiden, welches Ergebnis für ihn richtig ist.

    Gruß

    Edgar

    Anzeige
    AW: Es sollte...
    10.06.2025 13:21:34
    Christian
    Hallo ihr beiden,

    warum auch immer ich hatte erst jetzt eine Mail bekommen, dass wieder eine Antwort zu dem Beitrag kam.
    Zur Zufriedenheit, versetzt euch auch mal in meine Lage. Ich bin eher Laie und kenne nicht alle eventualitäten mit denen ich mich auseinandersetzen und unzufrieden sein könnte.

    Woher soll ich, wenn ich mich nicht so im speziellen mit Date,AddYears auskenne, auf die Idee kommen, so etwas wie die Anmerkung von Luschi überhaupt zu überprüfen?
    Ich gehe als Fragesteller davon aus, dass wenn dem Antworter bekannt ist, dass die Lösung nicht 100% passt, ich darauf hingewiesen werde.

    Gruß
    Christian
    Anzeige
    AW: Es sollte...
    10.06.2025 17:14:17
    Luschi
    Hallo Christian,

    Ich gehe als Fragesteller davon aus, dass wenn dem Antworter bekannt ist, dass die Lösung nicht 100% passt, ich darauf hingewiesen werde.

    Du bist ein endloser Träumer, der glaubt, daß im Internet (egal ob kostenlos oder per Money) die Lösung aller Probleme liegt.
    Du mußt schon die Lösungsvorschläge selbst testen, bevor Du solche Aussagen triffst: 'hat geklappt, danke'.
    Wenn ich eine vorgeschlagene Lösung anzweifle, dann habe ich Zeit & Grips investiert, doch davon kann ich bei Dir nix feststellen.

    Gruß von Luschi
    aus klein-Paris
    Anzeige
    Anzeige
    Anzeige
    Live-Forum - Die aktuellen Beiträge
    Datum
    Titel
    14.05.2026 13:31:09
    14.05.2026 09:50:42
    13.05.2026 19:14:18