Seite 1 von 1
Schnittmenge von Datumsbereichen
Verfasst: Fr 22. Okt 2021, 11:00
von saigo
Hallo zusammen,
ich grübele gerade über einem kleinen Problem und suche eine elegantere Lösung als die, welche mir bisher eingefallen ist.
Problem:
Gesucht ist die Schnittmenge zweier Zeitspannen. Dabei ist eine Spanne fix (bspw. 1.10.2020 - 31.9.2021) und eine zweite zu prüfende Spanne ist variabel. bspw.8.8.2020 -2.3.2021 oder 1.11.2020 -30.10.2021 oder 1.2.2021-1.12.2021 o.ä. Sprich das Start- und das Enddatum der variablen Zeitspanne kann kleiner/größer/gleich dem Start- bzw. End-Datum der fixen Zeitspanne sein. Ich suche nun eine elegante Möglichkeit die Anzahl der Tage der variablem Zeitspanne auszugeben die sich im Zeitraum der fixen Zeitspanne befinden.
Mein bisheriger Ansatz:
Erstes rangehen war über reine if-then-else Verschachtelungen, dass hat sich aber als recht sperrig und unübersichtlich erwiesen.
Wenn jemand da eine Idee hätte wie das ganze schlank und übersichtlich lösbar ist würde ich mich freuen.
Vielen lieben Dank schonmal
lg Saigo
Re: Schnittmenge von Datumsbereichen
Verfasst: Fr 22. Okt 2021, 11:10
von Mondblatt24
Hallo,
saigo hat geschrieben: ↑Fr 22. Okt 2021, 11:00
Dabei ist eine Spanne fix (bspw. 1.10.2020 - 31.9.2021)
Wo ist der Fehler?
Eine Beispieldatei ist hilfreich!

- Dateianhänge.png (46.57 KiB) 3848 mal betrachtet
Gruß Peter
Re: Schnittmenge von Datumsbereichen
Verfasst: Fr 22. Okt 2021, 11:26
von saigo
Nein kein Fehler, darum ging es nicht.
Wie ich geschrieben hatte geht es mir darum eine Bessere Lösung als meinen Ansatz zu finden.
Mit meiner If-then Konstruktion ist es einfach unübersichtlich, mir fehlt aber grade die Idee für einen anderen Ansatz.
z.Z. Prüfe ich ob das Startdatum größer/kleiner/gleich ist ob das End-Datum größer kleiner gleich ist und daraus folgend subtrahiere ich je nach Ergebnis das fixe oder variable Startdatum von dem fixen oder variablem Enddatum.
... OK das jetzt liest sich so wirr ich mache gleich mal eine Beispieldatei. gib mir ein paar Minuten

Re: Schnittmenge von Datumsbereichen
Verfasst: Fr 22. Okt 2021, 12:01
von Mondblatt24
saigo hat geschrieben: ↑Fr 22. Okt 2021, 11:26
mir fehlt aber grade die Idee für einen anderen Ansatz.
... OK das jetzt liest sich so wirr ich mache gleich mal eine Beispieldatei. gib mir ein paar Minuten
Bis dahin
https://www.youtube.com/watch?v=QOsxfmWYXpE
Re: Schnittmenge von Datumsbereichen
Verfasst: Fr 22. Okt 2021, 12:25
von saigo
So, sorry hat ein paar Minuten länger gedauert, musste das Kind noch hinlegen
Hoffe das bringt Klarheit rein. Ich suche halt nur eine eleganter bzw. übersichtlicher Lösung für den Fall das die Tabellen nicht so simpel aufgebaut sind wird das sonst schwer unübersichtlich.
LG
Nachtrag: Das Video scheint interessant zu sein, führe ich mir nachher gleich mal zu Gemüte, ich hab das irgendwie nicht gefunden. Danke
Re: Schnittmenge von Datumsbereichen
Verfasst: Fr 22. Okt 2021, 17:54
von Lupp
(Hoffe, das Kind hat gut geschlafen.)
Wenn man den Schnitt zweier Intervalle braucht, kann man die Auswertungen, die Bedingungen erfordern, in den Standardfunktionen MIN() und MAX() verstecken.
Die mögliche Untergrenze des Schnittintervalls bekommt man als MAX(unter1; unter2), und die Obergrenze als MIN(ober1; ober2), wobei das intervall leer ist, falls die vermutete Untergrenze größer ist als die Obregrenze. In deinem besonderen Fall muss man noch berücksictigen, dass auch ein Intervall der Länge 0 in deinem Sinne einen Tag enthält. Für Reihe 3 deines Beispielblatts lautet die passende Formel dann
Code: Alles auswählen
=MAX(-1;MIN(GANZZAHL($C$2);GANZZAHL($C3))-MAX(GANZZAHL($B$2);GANZZAHL($B3)))+1
wobei GANZZAHL() den Datumswert abrundet, falls eine durch das Anzeigeformat unterdrückte Uhrzeit enthalten sein sollte.
Deine eigene Formel mit den geschachtelten Bedingungen habe ich nicht genau studiert. Sie scheint aber in Zeile 4 ein falsches Ergebnis zu liefern.
Siehe Anhang:
Re: Schnittmenge von Datumsbereichen
Verfasst: Mo 25. Okt 2021, 22:22
von Helmut_S
Hallo saigo, nachdem du den Thread noch nicht als gelöst gekennzeichnet hast, erlaube ich mir noch einen Vorschlag zu bringen. Der Vorschlag von @lupp mit der Funktion max() ist natürlich nicht zu toppen. Ich habe hier drei Formeln verwendet, die ich in den Namen "eins, zwei, drei" gespeichert habe; die fixen Daten sind als "Fixstart" und "Fixende" benannt.
Sollte dein Problem gelöst sein, bitte dies kenntlich machen.
Gruß Helmut