37414
Goto Top

Urlaubsantrag - Wenn-Und-Oder Abfrage mit Excel mit mehreren Prüfungen unmöglich?

Hallo liebe User,

ich verzweifle seit Stunden bei einer Wenn-Und-Oder Abfrage in Excel mit mehreren Prüfungen und bekomme es nicht hin.
Es handelt sich um ein Formular zum automatischen Ausfüllen eines Urlaubsantrages.

Werde mal kurz erklären, was genau gewünscht ist:

Es gibt 2 verschiedene Tabellenblätter (A + B) und insgesamt 4 Zellen, die miteinander geprüft werden sollen, bzw. die abhängig voneinander sind.

1) In Tabellenblatt B wird ein Datum aus Tabellenblatt A übernommen nach Zelle C3 (Tag Beginn neuer Urlaub)

2) In Tabellenblatt B Zellbereich C11 bis C13 stehen ebenfalls Daten, die auch aus Tabellenblatt A bezogen werden (Tage Beginn bisherige Urlaube).


Wir befinden uns in Zelle C14 >> hier soll die Formel später eingefügt werden!

WENN C3 ist gleich C13
ODER Zelle B13 im Tabellenblatt_A ist leer
DANN lasse Zelle C14 leer
SONST nimm den Inhalt aus Tabellenblatt_A Zelle B13

WENN aber C3 ungleich C13
UND Zelle B13 im Tabellenblatt_A ist leer
DANN schreibe den Inhalt von C3 in Zelle C14

Bisher habe ich nur folgenden Code in Zelle C14 hinbekommen:
=WENN(ODER($C$3=C13;$Tabellenblatt_A.B13="");"";$Tabellenblatt_A.B13)  

Dieser Code gibt quasi den ersten von mir beschriebenen Block wieder.

Wenn aber nun B13 im Tabellenblatt_A leer ist (wie ja im Code schon eingefügt), aber C3 ist eben NICHT gleich C13, dann steht eben auch NIX in Zelle C14.
Dort müßte aber korrekter Weise nun der Inhalt aus C3 stehen.

Hoffe Ihr versteht einigermaßen, was ich vorhabe face-wink

Schöne Grüße,
imebro

Content-Key: 610277

Url: https://administrator.de/contentid/610277

Printed on: April 25, 2024 at 00:04 o'clock

Member: em-pie
em-pie Oct 04, 2020 at 16:43:23 (UTC)
Goto Top
Moin,


mal so aus dem Stehgreif, weil ich gerade unterwegs bin:
Du musst innerhalb innerhalb deiner Wenn..dann - Funktion eine weitere Wenn... Dann einbauen.
Wenn(x<>y;“Toll“;Wenn(oder(x=y;x=13);“Besser“;“nichts“))

Gruß
em-pie
Mitglied: 37414
37414 Oct 04, 2020 at 18:17:05 (UTC)
Goto Top
Danke Dir @em-pie für den Code.

Denke Dein Code ist die Lösung, aber ich bekomme ihn irgendwie nicht in der Datei richtig umgesetzt.

Wie muss ich denn für mein Beispiel die beiden Wenn-Dann-Funktionen abtrennen?

Gruß,
imebro
Member: em-pie
Solution em-pie Oct 04, 2020 updated at 18:37:00 (UTC)
Goto Top
Versuche mal:
=WENN(UND(C3<>C13;A!B13<>““);C13;WENN(ODER(C3=C13;A!B13<>““);““;A!B13))

Habe es jetzt nicht getestet, könnte aber klappen...
Mitglied: 37414
37414 Oct 04, 2020 at 18:54:21 (UTC)
Goto Top
Danke Dir...

Funktioniert noch nicht.
Aber ich habe hier mal eine Beispieldatei hochgeladen, in der ich genau geschildert habe, was wie gehen soll.

Vielleicht magst Du Dir die Datei ja mal anschauen.

Test-Datei

Gruß,
imebro
Mitglied: 37414
37414 Oct 04, 2020 at 20:10:45 (UTC)
Goto Top
...habe wohl eine Möglichkeit gefunden.

Hier mein Code, der im Moment jedenfalls funktioniert:

=WENN($Tabellenblatt_A.B12="";"";WENN($Tabellenblatt_A.B13="";$Tabellenblatt_A.$B$5;$Tabellenblatt_A.B13))  

Werde damit morgen mal testen, was passiert, wenn ich unten noch weitere bisherige Urlaube eintrage.

Gruß,
imebro
Member: emeriks
emeriks Oct 05, 2020 at 06:26:47 (UTC)
Goto Top
Hi,
=WENN(ODER($C$3=C13;$Tabellenblatt_A.B13="");"";$Tabellenblatt_A.B13)
Wenn aber nun B13 im Tabellenblatt_A leer ist (wie ja im Code schon eingefügt), aber C3 ist eben NICHT gleich C13, dann steht eben auch NIX in Zelle C14.
Dort müßte aber korrekter Weise nun der Inhalt aus C3 stehen.
Nein, alles OK.
Wenn
- B13 im Tabellenblatt_A leer ist
dann ist die ODER-Bedingung erfüllt und dann liefert Dir WENN korrekterweise den ersten Wert, und das ist in Deiner Formel nun mal "".

Dort müßte aber korrekter Weise nun der Inhalt aus C3 stehen.
Wo sollte dieser her kommen? Im WENN stehen nur "" und $Tabellenblatt_A.B13 als Alternativen.

E.
Mitglied: 37414
37414 Oct 05, 2020 updated at 08:50:14 (UTC)
Goto Top
Hallo liebe User und danke für Eure Hilfe.

Der Code von "em-pie" hat zur Lösung beigetragen.
Mein Code, den ich ja weiter oben eingefügt hatte, funktioniert tatsächlich genau so, wie ich es wollte.

Zum besseren Verständnis möchte ich das Problem mal besser erklären - vielleicht hilft das auch anderen Lesern dieses Threads:

Die Mitarbeiter/-innen sollen die Möglichkeit haben, eine jeweils eigene Urlaubsdatei zu führen, die alle nur erdenklichen Berechnungen automatisch macht. Das realisiere ich über eine Excel-Datei (im Test habe ich jedoch "Libre-Office Calc" benutzt, da ich Zuhause kein Excel habe).

Es gibt insg. 3 Tabellenblätter:
1) Eingabemaske, wo der neue Urlaub eingetragen wird - zusammen mit den Mitarbeiter-Daten
2) Der eigentliche Urlaubsantrag, der später gedruckt wird. Diese Maske wird automatisch ausgefüllt
3) Eine Tabelle mit den Feiertagen, die sich automatisch durch die Jahresangabe in Tabellenblatt 1 berechnet und jährlich aktualisiert

Auf dem ersten Tabellenblatt (1) wird oben ein neuer Urlaub eingetragen (Datum von - bis).
Etwas darunter stehen bereits genommene Urlaube im laufenden Jahr (jeweils Datum von - bis)

Diese Urlaubseinträge (neuer und vorheriger Urlaub) sollen nun in ein weiteres Tabellenblatt (2) übernommen werden, was durch die Bezugsfunktion einfach funktioniert.

ABER...
Der jeweils neu eingetragene Urlaub soll auf dem zweiten Tabellenblatt immer unter die bereits genommenen Urlaube eingetragen werden.
Wenn dort z.B. schon 3 Urlaubszeiten eingetragen sind, soll der aktuelle Urlaub dort an 4. Stelle stehen. Stehen dort aber bereits z.B. 6 Urlaubszeiten, dann soll der aktuelle Urlaub an 7. Stelle stehen.

Und genau das war mein Problem, welches ich dann mit der folgenden Formel lösen konnte:

=WENN($Eingaben.B10="";"";WENN($Eingaben.B11="";$Eingaben.$B$5;$Eingaben.B11))  

Diese Formel steht dann im Tabellenblatt 2 im zweiten Feld (wo also der Beginn des zweiten Urlaubes aus Tabellenblatt 1 übernommen wurde).
Da immer nachgesehen wird, ob die Zeile darüber leer ist oder nicht, wird im ersten Feld (also erster Urlaub aus Tabellenblatt 1) eine Formel ohne die Prüfung des Feldes darüber eingesetzt.

Funktioniert prima und jetzt wird automatisch der jeweils neue Urlaub immer am Ende der Urlaubsliste angehangen.

Wochenenden und Feiertage:
Über die Formeln für "Nettoarbeitstage" sowie "Feiertage", werden auch diese automatisch berücksichtigt, damit auch die richtige Anzahl von Tagen für den jeweiligen Urlaub angerechnet wird.

Danke und schöne Grüße,
imebro
Mitglied: 37414
37414 Oct 05, 2020 at 09:29:58 (UTC)
Goto Top
S O R R Y... zu früh gefreut.

Habe wohl einen groben Denkfehler gemacht.

Da diese Urlaubsanträge ja für jeden Mitarbeiter/-in gespeichert werden, damit man über das ganze Jahr immer eine aktuelle Urlaubsaufstellung hat, ergibt sich natürlich ein Problem, welches mir leider erst auffiel, nachdem ich eben folgendes getestet habe:

Ich habe diese Datei nach dem Speichern wieder geöffnet und einen ganz neuen Urlaub im Tabellenblatt 1 (Eingabemaske) eingetragen.
Tja... und natürlich wird jetzt in Tabellenblatt 2 (eigentlicher und zu druckender U-Antrag) der letzte Eintrag einfach durch den neuen Eintrag ERSETZT!!!

Darüber hatte ich nicht nachgedacht, aber natürlich ist es logisch.

Gibt es folgende 2 Möglichkeiten?

1) Jeder Eintrag müßte in Tabellenblatt 2 erhalten bleiben und ein jeweils neuer Eintrag in Tabellenblatt 1 (Eingabemaske) müßte dann im Tabellenblatt 2 als unterster Eintrag hinzugefügt werden

2) Um es noch komplizierter zu machen:
Es kommt wohl auch vor, dass Mitarbeiter/-innen gleich 2 Urlaubszeiten eintragen wollen. Also z.B. vom 5.10.20 - 9.10.20 und vom 12.10.20 - 16.10.20.
Hierzu würde es dann die Möglichkeit geben, diese beiden Urlaubszeiten in je eine Zeile einzutragen. Man hätte also die Möglichkeit, 2 Urlaubszeiten untereinander anzugeben. Aber diese müßten dann auch wieder in Tabellenblatt 2 jeweils unten angehangen werden und müßten dort auch stehen bleiben, wenn in der Eingabemaske wieder neue Urlaube eingetragen werden.

Geht das technisch überhaupt? face-wink

Sorry, ich weiß - ist sehr kompliziert.
Falls es Euch hilft, könnte ich einfach mal mein jetztiges Konstrukt hier hochladen und Ihr könnt es Euch anschauen.

Gruß,
imebro