Wochenplan in Monat darstellen
#1
Hallöchen,

ich habe diesen Wochenplan:
Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFGHIJKL
120261
2IDNameVornameMoDiMiDoFraktivFeiertage
31MeierWilliTour ATour CTour Dx01. Jan
42MüllerOttoTour ATour B06. Jan
53SchulzeGerhardTour BTour ATour Ex
Verwendete Systemkomponenten: [Windows (64-bit) NT 10.00] / MS Excel 365
Diese Tabelle wurde mit Tab2Html (v2.7.2) erstellt. ©Gerd alias Bamberg (angepasst von mumpel und schauan)

Ich möchte den nun auf einen Monat erweitert darstellen. Zeil ist, alle Tage des Monats zu listen, also z.B. 1-31 im Januar. An Feiertagen oder ggf. anderen in der Tabelle tbl_FTage aufgeführten tagen sollen die Touren nicht eingetragen werden.
Bislang hätte ich eine Lösung, aber dort werden nur die Arbeitstage aufgeführt.
Bei dem anderen Ansatz habe ich zwar alle Tage, aber zum einen mit Hilfsspalten Sa + So im Wochenplan und die Touren werden auch an den freien Tagen eingetragen Sad

Zusatzziel wäre die Einbeziehung der Spalte "akriv" - klar, die kann ich übernehmen und danach filtern, aber wenn das bereits in der Formel gehen würde ...

Testdaten mit den beiden Ansätzen siehe Anhang.


Angehängte Dateien
.xlsx   Test_LET_Monat.xlsx (Größe: 15,04 KB / Downloads: 13)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#2
Hallo André,

ich hoffe ich habe es richtig verstanden, dann wäre dies mein Weg (O2024):

Code:
=LET(
    xA;DATUM(B1;C1;SEQUENZ(1;TAG(MONATSENDE(DATUM(B1;C1;1);0))));
    xB;tbl_Touren[[Mo]:[Fr]];
    xC;tbl_Touren[aktiv];
    xD;tbl_Touren[[ID]:[Vorname]];
    xE;tbl_Touren[[#Kopfzeilen];[ID]:[Vorname]];
    xF;tbl_FTage[Feiertage];
    xG;FILTER(xA;(WOCHENTAG(xA;2)<=5)*ISTFEHLER(VERGLEICH(xA;xF;0)));
    xH;ANZAHL(xG);
    xI;ZEILEN(xC);
    xJ;MATRIXERSTELLEN(xI;xH;LAMBDA(z;sp;WENN(INDEX(xC;z)="x";INDEX(xB;z;REST(WOCHENTAG(INDEX(xG;sp);2)-1;5)+1);"")));
    VSTAPELN(HSTAPELN(xE;xG);HSTAPELN(xD; WENN(xJ=0;"";xJ)))
)

Gruß Uwe
Antworten Top
#3
Hi Uwe,

erst mal Danke für den neuen Ansatz - Die Funktion sieht ziemlich anders aus als mein Weg. OK, wahrscheinlich auch wegen der anderen Reihenfolge Smile
Das Ergebnis ist in etwa das aus der Zelle A8 ff - dankenswerterweise ohne die Nullen. Thumps_up

Aber, ich wollte alle Tage, also von 1-31 wie in A21 ff.

Also in der Datumszeile alle Tage von 1-31. - ohne die Tour A am 1.1. und die Tour B am 6.1.
Der 1.1. und der 6.1. erscheinen also in der Datumszeile, und drunter ist leer...
Ebenso die Wochenenden. Also auch der 3.1. und der 4.1. usw. sollen in die Datumszeile, und drunter ist leer.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo Andre,

Ich bau dir das morgen vormittag um. Da muss dann lediglich in die Variable Sa und So dazugebaut werden. Eine Frage wäre noch. Soll die Datumsfolge schlüssig sein also incl. Feiertage?

Gruß Uwe
Antworten Top
#5
Hi Uwe,

also ja, es sollen alle Tage gelistet werden, aber dann die "freien" nicht mit den Touren ausgefüllt.
Idealerweise anhand der oberen tbl_Touren als Basis, ohne die "Hilfsspalten" Sa und So, wie ich es unten mit tbl_Touren_2 gemacht habe.

Also, mal nur die ersten 8 Tage dargestellt, soll es so aussehen:

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFGHIJK
34IDNameVornameDo,01.Fr,02.Sa,03.So,04.Mo,05.Di,06.Mi,07.Do,08.
351MeierWilliTour DTour ATour C
362MüllerOttoTour B
373SchulzeGerhardTour ETour BTour A
Verwendete Systemkomponenten: [Windows (64-bit) NT 10.00] / MS Excel 365
Diese Tabelle wurde mit Tab2Html (v2.7.2) erstellt. ©Gerd alias Bamberg (angepasst von mumpel und schauan)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Alles klar.

Gruß Uwe
Antworten Top
#7
... MATRIXERSTELLEN gibt es ja schon einige Zeit. Ist auch wieder ein Beispiel, das chatGPT ganz schön nachhinkt Sad
Ich hatte damit vor längerem mal zu tun und Dein Ansatz war mir vorhin Anlass, wieder nachzufragen:

Wenn du in deiner deutschen Excel-Version die Funktion MAKEARRAY nicht findest, liegt das nicht an der Sprache, sondern an der Excel-Version.
In der deutschen Excel-Version lautet der Funktionsaufruf für MAKEARRAY so:
📌 Syntax (Deutsch)
Excel
Code kopieren
MAKEARRAY(Zeilen; Spalten; LAMBDA(Zeile; Spalte; Berechnung))

korrekte Antwort wäre:
=MATRIXERSTELLEN(Zeilen; Spalten; lambda(Zeilen, Spalten))"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
Hallo,

anbei mein Lösungsvorschlag. Müsste passen, sofern ich das richtig verstanden habe.

Code:
=LET(vnJahr; $B$1;
     vnMonat; $C$1;
     vnFormat; "TTT";
     vnPersonen; tbl_Touren[[#Alle];[ID]:[Vorname]];
     vnTouren; tbl_Touren[[#Alle];[Mo]:[Fr]];
     vnStatus; tbl_Touren[[#Alle];[aktiv]];
     vnFeiertage; tbl_FTage[Feiertage];
     vnTage; SEQUENZ(1; DATUM(vnJahr; vnMonat + 1; 1) - DATUM(vnJahr; $C$1; 1); DATUM(vnJahr; vnMonat; 1));
     vnMatrix; MATRIXERSTELLEN(ZEILEN(vnTouren) - 1; SPALTEN(vnTage); LAMBDA(X;Y;
               WENN((LÄNGE(INDEX(vnStatus; X + 1; 1)) > 0) * (WENNFEHLER(VERGLEICH(INDEX(vnTage; 1; Y); vnFeiertage; 0); 0) < 1);
               LET(T; TEXT(INDEX(vnTage; 1; Y); vnFormat); N; WENNFEHLER(VERGLEICH(T; INDEX(vnTouren; 1; 0); 0); 0);
               WENN(N > 0; "" & INDEX(vnTouren; X + 1; N); "")); "")));
     HSTAPELN(vnPersonen; VSTAPELN(vnTage; vnMatrix)))

Nachtrag: anbei noch eine Version, die ohne Formatangabe TTT auskommt.

Code:
=LET(vnJahr; $B$1;
     vnMonat; $C$1;
     vnTage; {"Mo";"Di";"Mi";"Do";"Fr"};
     vnPersonen; tbl_Touren[[#Alle];[ID]:[Vorname]];
     vnTouren; tbl_Touren[[#Alle];[Mo]:[Fr]];
     vnStatus; tbl_Touren[[#Alle];[aktiv]];
     vnFeiertage; tbl_FTage[Feiertage];
     vnWochentage; WENNFEHLER(VERGLEICH(vnTage; INDEX(vnTouren; 1; 0); 0); 0);
     vnDaten; SEQUENZ(1; DATUM(vnJahr; vnMonat + 1; 1) - DATUM(vnJahr; $C$1; 1); DATUM(vnJahr; vnMonat; 1));
     vnMatrix; MATRIXERSTELLEN(ZEILEN(vnTouren) - 1; SPALTEN(vnDaten); LAMBDA(X;Y;
               WENN((LÄNGE(INDEX(vnStatus; X + 1; 1)) > 0) * (WENNFEHLER(VERGLEICH(INDEX(vnDaten; 1; Y); vnFeiertage; 0); 0) < 1);
               LET(N; WOCHENTAG(INDEX(vnDaten; 1; Y); 2); P; WENNFEHLER(VERGLEICH(N; vnWochentage; 0); 0);
               WENN(P > 0; "" & INDEX(vnTouren; X + 1; P); "")); "")));
     HSTAPELN(vnPersonen; VSTAPELN(vnDaten; vnMatrix)))

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#9
gelöscht, war falsch gedacht.

Gruß Uwe
Antworten Top
#10
@Uwe,
danke auch Dir, bei maninweb passt es mit den Feiertagen.
Bei Deinem Ansatz werden die beiden in der Reihenfolge rausgenommen, und dafür am Ende der 30. und 31 nochmal aufgeführt. Hatte ich auch noch nicht Wink
Bei mir hatte ich häufig # - Fehler oder die Stapelrichtung war falsch oder ... und dann habe ich erst mal die weiße Flagge gehisst. Da bin ich dann wohl doch nicht so fit Sad

@maninweb,
sehr schön, funktioniert beides tadellos Smile

würde das

Zitat:Zusatzziel wäre die Einbeziehung der Spalte "akriv" - klar, die kann ich übernehmen und danach filtern, aber wenn das bereits in der Formel gehen würde ...
--> akriv muss natürlich aktiv heißen Sad

auch schon in der Formel gehen?
Ich muss jetzt erst mal zum Beckenbodentraining ...


   
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste