
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:
• 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
Die folgende Formel ist MS365
exklusiv.
=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)
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"
- 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.