Versuch, Datumsunterschiede in Excel zwischen mehreren Einträgen zu finden

Versuch, Datumsunterschiede in Excel zwischen mehreren Einträgen zu finden

Ich habe eine Tabelle mit Rechnungen und Änderungsdatum. Darin sind mehrere Rechnungseinträge mit mehreren Daten pro Person enthalten. Ich versuche, die Daten zwischen dem ersten und dem letzten Eintrag zu finden, um einen Zeitrahmen zu erhalten, wie lange es von Anfang bis Ende gedauert hat.

Siehe Tabelle unten:

Rechnung Eingegeben/Geändert Zuletzt bearbeitet Zustand
N805844 05.02.2024 Joe Neueste
N805844 05.02.2024 Steve Vor
N805844 28.12.2024 Mike Vor
N808961 04.01.2024 Joe Neueste
N805961 03.01.2024 Joe Vor
N805961 01.02.2024 Mike Vor
N805961 01.02.2024 Steve Vor

Ich habe versucht, an einer Hilfsspalte zu arbeiten, um die Rechnungsnummer zu ermitteln und dann alle Datumswerte abzuziehen, was eine einzelne Zahl ergeben sollte – Tage bis zur Fertigstellung. Ich berücksichtige „Neueste“ und „Vorherige“, weil das hilfreich sein könnte.

Ich habe über eine Max/Min-Formel auf einem anderen Blatt nachgedacht, bin mir aber nicht sicher, wie ich das hinbekommen soll.

Ich werde diese Tabelle dann umstellen, um die Tage bis zur Fertigstellung anzuzeigen. Für jede Hilfe wäre ich dankbar.

Antwort1

Es gibt mehrere Möglichkeiten, dies zu erreichen. Ich werde versuchen, einige meiner Kenntnisse unter Verwendung von zu veröffentlichen Excel Formulas. Es gibt auch eine flexible Option, und zwar die Verwendung von POWER QUERY.

Verwenden von Excel-Formeln:

Bildbeschreibung hier eingeben


• In der Zelle verwendete Formel F2, die die eindeutigen Rechnungen zurückgibt

=UNIQUE(A2:A8)

• In der Zelle verwendete Formel G2, die sowohl das Startdatum als auch das Enddatum zurückgibt

=AGGREGATE({15,14},6,B$2:B$8/($F2=A$2:A$8),1)

• Für #Tage platzieren Sie Folgendes in der ZelleI2

=H2-G2+1

Alle oben genannten Formulare müssen ausgefüllt werden, außer dem für Rechnungen.


Alternativer Weg 2

Bildbeschreibung hier eingeben


Die folgende Formel ist MS365exklusiv.

=LET(
     _UniqInv, UNIQUE(A2:A8),
     _LastestDate, MAXIFS(B2:B8,A2:A8,_UniqInv),
     _PriorDate, MINIFS(B2:B8,A2:A8,_UniqInv),
     _DataBody, HSTACK(_UniqInv, _PriorDate, _LastestDate, _LastestDate-_PriorDate+1),
     VSTACK({"Unique Invoice","Prior Date","Latest Date","# Of Days"},_DataBody))

  • Verwenden UNIQUE()der Funktion zum Zurückgeben eindeutiger Rechnungen.
  • Wird verwendet MAXIFS(), um das aktuellste Datum zurückzugeben.
  • Wird verwendet MINIFS(), um das Startdatum zurückzugeben.
  • Verwenden Sie diese Option HSTACK(), um alle drei oben genannten Variablen zusammenzuführen und führen Sie mit der zweiten und dritten Variable eine Subtraktion durch, um #die Anzahl der Tage zurückzugeben. (Notiz:Bei der Anzahl der Tage handelt es sich um alle vorherigen Daten inklusive. Wenn Sie das nicht möchten, schließen Sie die aus +1.)
  • Zum Schluss können Sie VSTACK()dem Ganzen noch eine Kopfzeile hinzufügen.

Eine andere Möglichkeit ist die Verwendung der neuen Beta-fähigen Funktion in MS365-GROUPBY()

=LET(
     _Data, DROP(GROUPBY(A2:A8,B2:B8,HSTACK(MIN,MAX),0,0),1),
     _NoOfDays, INDEX(_Data,,3)-INDEX(_Data,,2)+1,
     VSTACK({"Unique Invoice","Prior Date","Latest Date","# Of Days"},
     HSTACK(_Data,_NoOfDays)))

Und dies kann auch erreicht werden mit Power Query, verfügbar in Windows Excel 2010+undExcel 365 (Windows or Mac)

Bildbeschreibung hier eingeben


Um Power Query zu verwenden, befolgen Sie die Schritte:

  • Konvertieren Sie zunächst die Quellbereiche in eine Tabelle und benennen Sie diese entsprechend. Für dieses Beispiel habe ich sie wie folgt benannt:Table1

  • Öffnen Sie als Nächstes eine leere Abfrage über Datadie Tabulatortaste --> Get & Transform Data--> Get Data--> From Other Sources-->Blank Query

  • Das obige lässt das Power QueryFenster öffnet sich, jetzt von HomeTab --> Advanced Editor--> Und fügen Sie das Folgende ein, M-Codeindem Sie alles entfernen, was Sie sehen, und drücken SieDone

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"Invoice"}, {{"Start_Date", each List.Min([#"Entered/Modified"]), type datetime}, {"End_Date", each List.Max([#"Entered/Modified"]), type datetime}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "No_Of_Days", each Duration.Days([End_Date]-[Start_Date])+1),
    #"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Invoice", type text}, {"Start_Date", type date}, {"End_Date", type date}, {"No_Of_Days", Int64.Type}})
in
    #"Changed Type"

Bildbeschreibung hier eingeben

  • Zum Schluss importieren Sie es wieder nach Excel--> Klicken Sie auf Close & Loadoder Close & Load To-->. Der erste Klick erstellt ein New Sheetmit der erforderlichen Ausgabe, während der letzte Klick ein Fenster öffnet, in dem Sie gefragt werden, wo das Ergebnis abgelegt werden soll.

verwandte Informationen