Hallo,
der Tilde-Operator, den HeritzP da verwendet, ist ziemlich neu, siehe:
https://help.libreoffice.org/Calc/Opera ... operatoren. Er verbindet damit den Bereich, in dem das Personal steht mit dem Bereich, wo die Urlauber stehen und den Bereichen, wo die Namen in den Wochenspalten stehen und zählt dann in dem so verbundenen Bereich, ob Namen aus dem Personal-Bereich mehrfach vorkommen. Die werden dann ausgeschlossen.
Ich würde da anders vorgehen. Ich würde die Namen aus dem Personal-Bereich ausschließen, die schon mindestens einmal in den Bereichen Urlauber und in den Wochenspalten vorkommen:
Code: Alles auswählen
=WENN((ZÄHLENWENN(Namen_in_Spalte;Siemenspersonal)=0)*(ZÄHLENWENN(Urlauber_in_Woche;Siemenspersonal)=0);Siemenspersonal)
Diese Formel nutzt die Namen
Siemenspersonal =
(hattest Du ja schon)
Urlauber_in_Woche =
Code: Alles auswählen
INDEX($I$1:$I$1000;5+GANZZAHL((ZEILE($I3)-ZEILE($A$3))/14)*14):INDEX($I$1:$I$1000;14+GANZZAHL((ZEILE($I3)-ZEILE($A$3))/14)*14)
Namen_in_Spalte =
Code: Alles auswählen
INDEX($A$1:$I$1000;5+GANZZAHL((ZEILE($A3)-ZEILE($A$3))/14)*14; SPALTE(A$1)):INDEX($A$1:$I$1000;14+GANZZAHL((ZEILE($A3)-ZEILE($A$3))/14)*14;SPALTE(A$1))
Sie macht sich außerdem die Matrix-Formel-Funktionalität zu Nutze. ZÄHLENWENN will ja normalerweise nur *einen* Wert bei Kriterium. Hier wird aber ein ganzer Bereich (Siemenspersonal) als Kriterium angegeben. Dadurch wird im Hintergrund je Eintrag in Siemenspersonal ein Ergebnis von ZÄHLENWENN zurückgegeben und ergibt so eine Matrix von z.B. {0;1;0;1;0;0;0;...}. Diese wird dann mit 0 verglichen und ergibt {WAHR; FALSCH; WAHR; FALSCH; WAHR; WAHR; WAHR;...} je nach dem ob =0 oder nicht. Wenn man zwei solcher Matrixen mit einer normalen Multiplikation verbindet, ergibt sich quasi eine UND-Verknüpfung der Matrixen. Es ergibt sich somit je Eintrag in Siemenspersonal nur dann WAHR, wenn beide Matrixen für diese Stelle WAHR enthalten, der Eintrag also weder in Namen_in_Spalte noch in Urlauber_in_Woche enthalten ist.
Das Hauptproblem ist es, das ganze so variabel zu gestalten, dass die Kalenderwochen vervielfältigt werden können. Das habe ich erreicht, indem ich davon ausgegangen bin, dass alle Kalenderwochen 14 Zeilen enthalten. Damit müssen sich die Bereiche Urlauber_in_Woche und Namen_in_Spalte alle 14 Zeilen um 14 Zeilen nach unten verschieben.
berechnet diesen Offset dadurch, dass die Zeile in
variabel ist.
Damit können neue Kalenderwochen erzeugt werden, indem einfach die 14 Zeilen der vorherigen Kalenderwoche um 14 Zeilen nach unten kopiert werden. Das funktioniert bis Zeile 1000, wegen
in den Namensformeln. Das kann man aber erweitern, wenn nötig. Bitte aber nicht zu üppig, denn Matrix-Formeln werden bei massiver Verwendung schnell zu sehr großen Performance-Bremsen. Dann lieber je Quartal bspw. ein neues Tabellenblatt verwenden.
Siehe Anlage. Die Spalten ab J sind nur Erläuterung und können gelöscht werden.
Da habe ich auch noch eine bedingte Formatierung drin, die Zellen rot färbt, wenn man *nach* Namenszuweisung in den Spalten noch Urlauber nachträgt, die schon in den Spalten stehen.
viele Grüße
Axel