Excel Verschachtelte WENN UND Formel
#1
Liebe Excel Experten,
ich habe leider ein Problem mit folgender verschachtelten WENN UND Formel:
 
=WENN(UND(L$14>=$D15;L$14<($D15+$J$3));"A";WENN(UND(L$14>=($D15+$J$3);L$14<($D15+$J$3+$E15));"B";WENN(UND(L$14>=($D15+$J$3+$E15);L$14<($D15+$J$3+$E15+$J$4));"C";WENN(UND(L$14>=($D15+$J$3+$E15+$J$4);L$14<($D15+$J$3+$E15+$J$4+$J$5));"D";""))))
 
In Zeile 14 stehen Datum und Uhrzeit. Es gibt 4 Prozessschritte A-D. Diese sollen in Zeile 15 eingetragen werden. Wie lange ein Prozessschritt dauert ist in J3-5 für A,C und D und E15 für B eingetragen. Leider wird hin und wieder Schritt A und C ausgelassen oder doppelt eingetragen (siehe Beispielsdatei).
 
Ich komme leider nicht weiter und hoffe Ihr könnt mir helfen.



.xlsm   Planung V4.xlsm (Größe: 380,04 KB / Downloads: 8)
Top
#2
Hallo H...,

A) In Excel sind Zeiten ungleich 00:00 Uhr Zahlen mit Nachkommastellen.  Und beim Vergleich von Gleitkommazahlen auf Gleichheit haben Rechner häufig Probleme.

Da die Zeiten in Minuten (sogar Viertelstunden) eingetragen werden, kannst du unter anderem die Werte in der Formel in Texte mit TEXT(..;"JJJJMMTT hh:mm") oder in ganze Zahlen mit RUNDEN(..*10000;0) umwandeln und dann vergleichen.

B) Mit einer Zusätzlichen Bedingung für Zeiten kleiner dem Startzeitpunkt und dem Ergebnis "" brauchst du in den anderen vier Fällen immer nur die Obergrenze abfragen.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#3
Hi,

1. "1" usw. sind Texte und keine Zahlen.
2. >= macht hier einen Sinn.
3. Rundungsdifferenzen kann man in der Regel auch durch Subtraktion/Addition sehr kleiner Werte ausmerzen.

Arbeitsblatt mit dem Namen 'Stationsplanung'
 KLMNOPQRSTUVWXYZAAAB
8Kapazität55555555555555555
9Bedarf00000000001000000
10Schritt 100000000001000000
11Schritt 300000000000000000
12Schicht11111111111111111
13                  
14 06:30:0006:45:0007:00:0007:15:0007:30:0007:45:0008:00:0008:15:0008:30:0008:45:0009:00:0009:15:0009:30:0009:45:0010:00:0010:15:0010:30:00
15           ABBBBBB

ZelleFormel
L8=WENN(L12="";"";$G$5)
L9=WENN(L12="";"";L10+L11)
L10=WENN(L12="";"";ZÄHLENWENN(L$15:L$301;"A"))
L11=WENN(L12="";"";ZÄHLENWENN(L$15:L$301;"C"))
L12=VERGLEICH(L14-1%%;$D$2:$D$4;1)
L14=G3
L15=WENN(L$14>=$D15;WENN(L$14+1%%<($D15+$J$3);"A";WENN(L$14+1%%<($D15+$J$3+$E15);"B";WENN(L$14+1%%<=($D15+$J$3+$E15+$J$4);"C";WENN(L$14+1%%<($D15+$J$3+$E15+$J$4+$J$5);"D";""))));"")
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#4
Hi,

was ich vergessen habe: Damit die Formel in L12ff. funktioniert, muß in D2 eine 0 stehen!

Für M14ff. folgende Formel:


Code:
=WENN(L14>=RUNDEN($G$4;7);"X";L14+1/96)
@ego,
Dein Vorschlag, die Zeiten in Text umzuwandeln und dann zu vergleichen ist für mich die allerschlechteste Möglichkeit die es gibt und die Version, mit 10000 zu multiplizieren ist nur unwesentlich besser!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#5
Hallo Danke an alle.

Die Lösung von BoskoBiati hat sehr gut funktioniert.

Nur habe ich ein kleines Problem festgestellt. Wenn ich in Zeile 16 einen weiteren Eintrag mache wird mir der erste Teilprozess A nicht angezeigt. Aber auch nur wenn direkt nach dem Ende in Zeile 15 der Teilprozess A beginnen soll. Also wenn in Zeile 15 Der Teilprozess D um 12:00 endet. Dann beginnt in Zeile 16 der Teilprozess A nicht um 12:15, wenn das gewollt wäre. 

Könnt Ihr mir hier nochmal helfen?

Gruß

Hamza420
Top
#6
Hi,

dann zeig mal....
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#7
(19.11.2017, 23:39)Ego schrieb: Da die Zeiten in Minuten (sogar Viertelstunden) eingetragen werden, kannst du  unter anderem die Werte in der Formel in Texte mit TEXT(..;"JJJJMMTT hh:mm") oder in ganze Zahlen mit RUNDEN(..*10000;0) umwandeln  und dann vergleichen.
Da regt sich Bosko zu Recht auf:
Sekunden: *86400
Minuten: *1440
Stunden: *24
Dann Runden(;0).
Bei Zeiten rundet man anders :)
Top
#8
Vielen Dank im Voraus. Anbei die Datei.

Wie gesagt der Fehler scheint in Zeile 16 zu sein. Da stimmt wieder was nicht mit den Balken.

Gruß

Hamza


Angehängte Dateien
.xlsm   Planung V6.xlsm (Größe: 591,19 KB / Downloads: 3)
Top
#9
Hi,


Arbeitsblatt mit dem Namen 'Stationsplanung'
 KLM
8Kapazität44
9Bedarf10
10Schritt 110
11Schritt 200
12Schicht11
13   
14 06:3006:45
15 AB
16   

ZelleFormel
L8=WENN(L12="";"";$G$5)
L9=WENN(L12="";"";SUMME(L10:L11))
L10=WENN(L12="";"";ZÄHLENWENN(L$15:L$300;"A"))
L11=WENN(L12="";"";ZÄHLENWENN(L$15:L$300;"C"))
L12=WENNFEHLER(VERGLEICH(L14-1%%;$D$2:$D$4;1);"")
L14=G3
L15=WENNFEHLER(WENN(RUNDEN(L$14;6)>=RUNDEN($D15;6);WENN(L$14+1%%<($D15+$J$3);"A";WENN(L$14+1%%<($D15+$J$3+$E15);"B";WENN(L$14+1%%<=($D15+$J$3+$E15+$J$4);"C";WENN(L$14+1%%<($D15+$J$3+$E15+$J$4+$J$5);"D";""))));"");"")
L16=WENNFEHLER(WENN(RUNDEN(L$14;6)>=RUNDEN($D16;6);WENN(L$14+1%%<($D16+$J$3);"A";WENN(L$14+1%%<($D16+$J$3+$E16);"B";WENN(L$14+1%%<=($D16+$J$3+$E16+$J$4);"C";WENN(L$14+1%%<($D16+$J$3+$E16+$J$4+$J$5);"D";""))));"");"")
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#10
Hallo,

Danke an Alle. Die Lösung von BoskoBiati funktioniert ganz gut.

Vielen Dank
Top


Gehe zu:


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