Hallo,
Zitat:Leider hängen die Spalten nicht zusammen, da zwischen den Arbeitszeitzellen der einzelnen Mitarbeiter ja noch die Berechnungszellen sind. Und mit mehreren Bereichen hat LAMBDA wohl ein Problem. Laut ChatGPT gibt es dafür die Funktion "UNION". Die funktioniert bei mir aber nicht. Oder ChatGPT und ich machen was falsch.
da hast du wohl nicht genau genug recherchiert. Die Funktion UNION bzw. ihre Verwandte INTERSECT gibt es nur als VBA-Funktion und nicht als Arbeitsblattfunktion.
Als Arbeitsblattfunktion muss man dazu
HSTAPELN(Bereich1;Bereich2;...) verwenden: Diese Funktion stapelt mehrere Bereiche, die gleich viel Zeilen haben müssen, nebeneinander (H=Horizontal), während VSTAPELN(...) das gleiche vertikal (V=Vertikal) macht.
Im
Arbeitsblatt "DP|AZA" habe ich dir in
Zelle AO5 die entsprechend angepasste Formel eingefügt:
Code:
=NACHZEILE(
ABSCHNBEREICH(
HSTAPELN(
$D$5:$G$35;
$J$5:$M$35;
$P$5:$S$35;
$V$5:$Y$35;
$AB$5:$AE$35;
$AH$5:$AK$35
);
2;
0
);
LAMBDA(zl; MA_Dienstzeiten(zl))
)
Dabei habe ich die 6 Bereiche (mit ihren Zeilen 5:35) horizontal gestapelt.
Darüber hinaus habe ich die
HSTAPELN()-Funktion zusätzlich in die
ABSCHNBEREICH(Bereich; 2; 0)-Funktion eingebettet. Diese bewirkt mit ihren Parametern 2;0 , dass der Stapelungsbereich (zuerst unten endend in Zeile 35) solange nach oben verkleinert wird, bis im Bereich die ersten Zellen auftauchen, die Daten enthalten. Im aktuellen Arbeitsblatt ist das Zeile 9 (statt Zeile 35).
Das hat zur Folge, dass der Resultatbereich für obige Funktion momentan im Bereich AO5:AO9 zu liegen kommt.
Gibst du in einem der 6 MA-Bereiche zB. in Zeile 10 Arbeitszeitdaten ein, vergrößert sich der Resultatbereich automatisch auf AO5:AO10.
In
Zelle AP5 habe ich die leicht modifizierte Funktion
=NACHZEILE(AO5#; LAMBDA(zl;KernzeitLückenlos(zl;$AP$2)))eingefügt. Sie greift wegen
AO5# auf den vorhin genannten Resultatbereich zu, wobei ich in
Zelle AP2 die Zeichenkette für die Kernzeit (07:00-09:00, 13:00-00:00) eingefügt habe. Sie überprüft pro Zeile, ob dieser Zeitraum durch die Arbeitszeiten der MA lückenlos (=WAHR) abgedeckt wird (sonst FALSCH).
Zitat:Noch geiler wäre es natürlich, wenn nicht die zusammenhängenden Zeiten extrahiert werden, sondern die Lücken. Das würde alle Variationen (mit und ohne Pause) auf einmal abdecken.
Deshalb habe ich in
Zelle AQ5 folgende zusätzliche Formel eingefügt:
=NACHZEILE(AO5#; LAMBDA(zl; MA_DienstzeitLücken(zl)))Wie vorhin greift auch diese Formel auf den Resultatbereich AO5# der ersten Formel zu und gibt die nicht durch Arbeitszeiten abgedeckten Zeiten eines Tages zurück.
Die genannten Funktionen befinden sich alle im Namensmanager und dürfen von dort nicht entfernt werden (zusammen mit einer weiteren
Hilfsfunktion VonBis(txtVB), die eine Zeichenkette in Von-Bis-Intervalle zerlegt und so eine 2-spaltige Matrix erzeugt):
Code:
VonBis = LAMBDA(txtVB; LET(
tx24vb; REGEXERSETZEN(txtVB; "00:00$"; "24:00");
--TEXTTEILEN(tx24vb; "-"; ", "))
);;
Gruß Anton.
Windows 10 64bit
Office365 32bit