Arrayformel mit mehreren Wenn-Bedingungen
#1
Guten Abend,

ich möchte einen kleinen Urlaubsplaner aufsetzen. In einer Tabelle stehen Mitarbeiterinitialien, daneben Start- und Endzeit ihrer Abwesenheit.
In einer zweiten Tabelle befindet sich ein Kalender. Dieser soll für jeden Kalendertag prüfen, ob an diesem Tag ein Mitarbeiter Urlaub beantragt hat (jeder Mitarbeiter wird in einer separaten Spalte geprüft).

Meine Arrayformel prüft ob
1. die Initialien der Abwesenheitstabelle mit den der aktuellen Kalenderspalte übereinstimmen
2. der Beginn der Abwesenheit kleiner gleich dem aktuell betrachteten Tag ist
3. das Ende der Abwesenheit größer gleich dem aktuell betrachteten Tag ist

Problem:
Die Formel findet den ersten angegebenen Zeitraum für Mitarbeiter "ms", aber nicht den zweiten. Wie muss ich die Formel anpassen?
Ich habe die Beispieldatei beigefügt, darin enthalten zwei Testformeln für Mitarbeiter ms, die jedoch beide nicht zum gewünschten Ziel führen.

   

Liebe Grüße!


Angehängte Dateien
.xlsx   arraytest.xlsx (Größe: 12,33 KB / Downloads: 7)
Top
#2
Hallöchen,

in unserem Forum findest Du dazu schon den einen oder anderen Hinweis, wenn Du z.B. nach Urlaub .

http://www.clever-excel-forum.de/Thread-...iebsferien
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallöchen André,

ich habe direkt mal die Suchfunktion bemüht, bin aber mit dem Suchbegriff "Urlaub" nicht fündig geworden. Ich bin nicht sicher, ob es mein Anliegen, Datumsbereiche in ein Kalendarium zu übertragen so schon gibt, da alle Threads, die ich gefunden habe, sich auf ganz andere Aspekte der Urlaubsplanung beziehen.

Kann die Arrayformel überhaupt das leisten, was ich mir oben vorstelle oder muss ein anderer Ansatz her?

Grüße!
Top
#4
Hola,

da reicht:


Code:
=WENN(ZÄHLENWENNS($B$4:$B$6;$G$3;$C$4:$C$6;"<="&F4;$D$4:$D$6;">="&F4);"ms";"")

Aber was ist mit den anderen Mitarbeitern?

Gruß,
steve1da
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • Gimlee
Top
#5
Hallöchen,

Du könntest z.B. diese Formel einsetzen:
=SUMMENPRODUKT((B$4:B$6=G$3)*($C$4:$C$6<=F4)*(D$4:D$6>=F4))
Damit erhältst Du zumindest 0 und 1 je nach An- oder Abwesenheit.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Gimlee
Top
#6
Wow, ganz schön tricky, das über ZÄHLENWENNS zu lösen, da wäre ich nicht drauf gekommen. :-O Hut ab, wirklich!

Bei mir kriegt wie weiter oben geschrieben jeder Mitarbeiter eine eigene Spalte. Da die Anzahl überschaubar ist, ist das kein Problem.

Die auf diese Weise aufgefüllten Kalendertage überführe ich übrigens mittels bedingter Formatierungen in reine Farbstriche und lege diese per verlinkter Grafik über ein Kalenderblatt, somit kann ich nun die Urlaube vollautomatisch als Layer einbinden. Die Kollegen werden staunen. Ganz herzlichen Dank!

Edit: @schauan, deine Lösung funktioniert so auch und kann problemlos um ein WENN ergänzt werden, wie steve1da das gemacht hat. Jetzt habe ich schon zwei Lösungen, ihr seid echt super. Danke auch an dich fürs Tüfteln!
Top
#7
Hi,

zeig mal bitte die fertige Datei mit dem Urlaubs-Layer.

Hier die Formel von steve1da für weitere Spalten umgestellt:

Arbeitsblatt mit dem Namen 'Tabelle1'
FGH
2KalenderTestformel1Testformel2
3msal
401. Okt
502. Okt
603. Okt

ZelleFormel
G4=WENN(ZÄHLENWENNS($B$4:$B$6;G$3;$C$4:$C$6;"<="&$F4;$D$4:$D$6;">="&$F4);G$3;"")
H4=WENN(ZÄHLENWENNS($B$4:$B$6;H$3;$C$4:$C$6;"<="&$F4;$D$4:$D$6;">="&$F4);H$3;"")
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
Top


Gehe zu:


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