Kreuztabelle Gruppierung nach Monaten eines Jahres

Hallo,
ich möchte in einer Kreuztabelle alle Monate eines Jahres (Userinput) ausgeben und dann zählen lassen, wenn der o. g. Monat in einem Zeitraum enthalten ist.
Zum besseren Verständnis:
Ich habe Teilnehmer mit unterschiedlichen Bewilligungszeiträumen für Weiterbildungsmaßnahmen (Kursbeginn + Kursende).
In der Kreuztabelle soll die Anzahl der Teilnehmer pro Monat ausgegeben werden, wenn der Monat (der Spalte) im Bewilligungszeitraum enthalten ist.
Beispiel:

  1. TN hat Maßnahmebewilligung vom 13.02.2024 bis 13.09.2024. Zahl 1 soll also in den Spalten Februar 2024 bis September 2024 ausgegeben werden.
  2. TN hat Maßnahmebewilligung vom 01.01.2024 bis 31.12.2024. Zahl 1 soll in allen 12 Monaten des Jahres ausgegeben werden.
    Habe schon so viel ausprobiert, komme aber nicht auf die Lösung.

Hallo Birgit. Herzlich Willkommen im List & Label Forum :wave:

Eine Möglichkeit, dieses Problem zu lösen, besteht darin, Summenvariablen zu verwenden, die dann in der Fußzeile ausgegeben werden.

Hierfür müssten zunächst 12 Summenvariablen erstellt werden, die jeweils die Summe über DateInRange() berechnen, abhängig vom Monat. Ein Beispiel für den Monat März könnte wie folgt aussehen:

Cond(DateInRange(<TeilnehmerStart>, 01.01.Jahr, 31.03.Jahr) und DateInRange(<TeilnehmerEnd>, 01.03.Jahr, 31.12.Jahr),1,0)

Alternativ besteht die Möglichkeit, die Berechnung auch im Gruppenfuß durchzuführen und dann die entsprechenden Kurse zu gruppieren.

Beste Grüße aus Konstanz :slight_smile:

Hallo Martin,
vielen Dank für die Antwort.
Wird in diesem Fall nicht “nur” geprüft, ob das Start- und Ende-Datum in dem jeweiligen Monat enthalten ist?

Guten Abend Birgit,

ja, das stimmt. Aber das besondere an dieser Vorgehensweise ist ja, dass bei der Berechnung, diese für jeden Benutzer und jeden Monat geprüft und aufaddiert wird.

Viele Grüße

Es ist doch immer wieder schön!

Zunächst mal gibt es die Herausforderung mit dem 29.2. dieses Jahr. Bei allen anderen Monaten kennt man den Monatsletzten.
Normalerweise macht ich es so: Nehme den ersten eines Monats, rechne einen Monat drauf und ziehe einen Tag ab.
Je nach Programiersprache anders.
Im Designer: AddMonths(DateYMD(2024,2,1),1) - 1 für Februar 2024 gibt 29.2.2024.

Irgendein Monat wäre also:
MonatStart = DateYMD(Jahr,Monat,1)
MonatEnde = AddMonths(DateYMD(Jahr,Monat,1),1) - 1

Die Teilnahme am Kurs hat eine Anfang und ein Ende.
TeilnehmerStart
TeilnehmerEnde

Ob die Teilnahme in einen Monat fällt ergibt sich so:
InMonat:= TeilnehmerStart <= MonatEnde and TeilnehmerEnde >= MonatStart
(Herrlich: Ob sich Datumsintervalle überlappen hat mich einige Stunden meines Lebens gekostet)

Wenn man sich jetzt also Summenvariablen bastelt, dann wäre die Condition für Februar 2024 z.B. diese:

Cond(TeilnehmerStart <= AddMonths(DateYMD(2024,2,1),1) - 1 and TeilnehmerEnde >= DateYMD(2024,2,1))

Ich hoffe, ich liege einigermaßen richtig.

2 Likes

Hallo, guten Morgen.
Also Kreuztabelle funktioniert nicht. Oder?
Da habe ich das Problem, dass ich in die Spaltenüberschrift nicht die Monate eines beliebigen Jahres (Userinput) bekomme.
In einer Tabelle funktioniert die Ausgabe der Teilnehmer bei Anwesenheit/Zugehörigkeit zu einem Monat.
Aber die Summe pro Monat wird nicht ausgegeben :-/
LG

Hallo,
Summe pro Monat funktioniert jetzt auch, aber nur in der Tabelle.
Für eine Kreuztabelle gibt es für mein zuvor beschriebenes Problem keine Lösung. Oder?
Vielen Dank auf jeden Fall für eure Hilfe.
LG Birgit

Guten Morgen Birgit,

um eine Kreuztabelle zu erstellen, müssen die Daten entsprechend vorbereitet werden. Ein Problem dabei ist, dass ein Datensatz potenziell in mehrere Gruppen fallen kann. Dies kann eine Kreuztabelle jedoch nicht abbilden, ohne dass für jeden Monat ein separater Datensatz vorhanden ist.

Viele Grüße aus Konstanz