Registriert seit: 24.02.2017
Version(en): 365; (2013)
Hallo zusammen,
ich habe hier folgende Formel:
Code:
=WENN(WENN(UND(DY48="in time";ISTLEER(CO48)=WAHR;W48<$EC$3);V48/L48;WENN(UND(DY48="in time";ISTLEER(CR48)=WAHR;Z48<$EC$3);Y48/L48;WENN(UND(DY48="in time";ISTLEER(CU48)=WAHR;AC48<$EC$3);AB48/L48;WENN(UND(DY48="in time";ISTLEER(CX48)=WAHR;AF48<$EC$3);AE48/L48;WENN(UND(DY48="in time";ISTLEER(DA48)=WAHR;AI48<$EC$3);AH48/L48;WENN(UND(DY48="in time";ISTLEER(DD48)=WAHR;AL48<$EC$3);AK48/L48;WENN(UND(DY48="in time";ISTLEER(DG48)=WAHR;AO48<$EC$3);AN48/L48;WENN(UND(DY48="in time";ISTLEER(DJ48)=WAHR;AR48<$EC$3);AQ48/L48;WENN(UND(DY48="in time";ISTLEER(DM48)=WAHR;AU48<$EC$3);AT48/L48;WENN(UND(DY48="in time";ISTLEER(DP48)=WAHR;AX48<$EC$3);AW48/L48))))))))))=0;"";WENN(UND(DY48="in time";ISTLEER(CO48)=WAHR;W48<$EC$3);V48/L48;WENN(UND(DY48="in time";ISTLEER(CR48)=WAHR;Z48<$EC$3);Y48/L48;WENN(UND(DY48="in time";ISTLEER(CU48)=WAHR;AC48<$EC$3);AB48/L48;WENN(UND(DY48="in time";ISTLEER(CX48)=WAHR;AF48<$EC$3);AE48/L48;WENN(UND(DY48="in time";ISTLEER(DA48)=WAHR;AI48<$EC$3);AH48/L48;WENN(UND(DY48="in time";ISTLEER(DD48)=WAHR;AL48<$EC$3);AK48/L48;WENN(UND(DY48="in time";ISTLEER(DG48)=WAHR;AO48<$EC$3);AN48/L48;WENN(UND(DY48="in time";ISTLEER(DJ48)=WAHR;AR48<$EC$3);AQ48/L48;WENN(UND(DY48="in time";ISTLEER(DM48)=WAHR;AU48<$EC$3);AT48/L48;WENN(UND(DY48="in time";ISTLEER(DP48)=WAHR;AX48<$EC$3);AW48/L48;"")))))))))))
Ja, ich weiß... geht sicher auch eleganter - aber hat soweit funktioniert.
Mein Problem:
In Zelle DY48 steht ein Status. Aktuell wird nur der Wert gezogen, wenn der Status auf "in time" steht.
Zukünftig soll der Wert aber gezogen werden wenn der Status auf "in time" ODER auf "early" steht.
Wie / wo baue ich da das Oder ein damit alles gleich bleibt und auch bei Status early ausgeführt wird?
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
16.03.2021, 16:18
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2021, 16:24 von LCohen.)
Du wiederholst unnötig 1000mal "in time" in lokalen UNDs, die genauso rausgeklammert werden könnten. Das "early" käme dann per ODER hinzu.
Auch der Rest der Formel lässt sich arrayisieren, so dass Du nicht jede 6. Milchkanne persönlich ansprechen musst.
Registriert seit: 24.02.2017
Version(en): 365; (2013)
Danke für die Info.
Könntest du mir auch zeigen wie? Wenn ich das wüsste hätte ich es schon selbst so gemacht
Registriert seit: 12.04.2014
Version(en): Office 365
Moin
Die Monsterformel ist sicher auch einem schlechten Datenaufbau geschuldet.
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
16.03.2021, 17:55
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2021, 17:56 von LCohen.)
=WENN(
WENN(UND(DY48="in time";ISTLEER(CO48)=WAHR;W48<$EC$3);V48/L48;
WENN(UND(DY48="in time";ISTLEER(CR48)=WAHR;Z48<$EC$3);Y48/L48;
WENN(UND(DY48="in time";ISTLEER(CU48)=WAHR;AC48<$EC$3);AB48/L48;
WENN(UND(DY48="in time";ISTLEER(CX48)=WAHR;AF48<$EC$3);AE48/L48;
WENN(UND(DY48="in time";ISTLEER(DA48)=WAHR;AI48<$EC$3);AH48/L48;
WENN(UND(DY48="in time";ISTLEER(DD48)=WAHR;AL48<$EC$3);AK48/L48;
WENN(UND(DY48="in time";ISTLEER(DG48)=WAHR;AO48<$EC$3);AN48/L48;
WENN(UND(DY48="in time";ISTLEER(DJ48)=WAHR;AR48<$EC$3);AQ48/L48;
WENN(UND(DY48="in time";ISTLEER(DM48)=WAHR;AU48<$EC$3);AT48/L48;
WENN(UND(DY48="in time";ISTLEER(DP48)=WAHR;AX48<$EC$3);AW48/L48))))))))))=0;"";
WENN(UND(DY48="in time";ISTLEER(CO48)=WAHR;W48<$EC$3);V48/L48;
WENN(UND(DY48="in time";ISTLEER(CR48)=WAHR;Z48<$EC$3);Y48/L48;
WENN(UND(DY48="in time";ISTLEER(CU48)=WAHR;AC48<$EC$3);AB48/L48;
WENN(UND(DY48="in time";ISTLEER(CX48)=WAHR;AF48<$EC$3);AE48/L48;
WENN(UND(DY48="in time";ISTLEER(DA48)=WAHR;AI48<$EC$3);AH48/L48;
WENN(UND(DY48="in time";ISTLEER(DD48)=WAHR;AL48<$EC$3);AK48/L48;
WENN(UND(DY48="in time";ISTLEER(DG48)=WAHR;AO48<$EC$3);AN48/L48;
WENN(UND(DY48="in time";ISTLEER(DJ48)=WAHR;AR48<$EC$3);AQ48/L48;
WENN(UND(DY48="in time";ISTLEER(DM48)=WAHR;AU48<$EC$3);AT48/L48;
WENN(UND(DY48="in time";ISTLEER(DP48)=WAHR;AX48<$EC$3);AW48/L48;"")))))))))))
Das sind schon mal zwei gleiche Teile, aus denen man mit WENNFEHLER nur einen machen kann.
Dann das "in time", welches rausgegliedert werden muss,
und wo hinter das "early" kommt mit ODER kommt.
Und dann jede 3. Milchkanne (statt 6., das lag an den schlechten Umbrüchen).
Bei 500 Fragen im Forum macht man nicht mehr diese vier Fehler gemeinsam. Max!
Registriert seit: 24.02.2017
Version(en): 365; (2013)
16.03.2021, 18:27
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2021, 18:27 von StrammerMax.)
Vielleicht weiß ich nach 500 Beiträgen immer noch so wenig, weil einem hier nur gesagt wird was man besser machen könnte - aber nicht wie?
Wenn ich wüsste wie ich deine Vorschläge umsetzen muss hätte ich das doch logischerweise schon selbst getan.
Da ich es offenbar nicht weiß bringt mir auch dein Hinweis nicht viel.
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
16.03.2021, 18:33
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2021, 18:33 von LCohen.)
Wenn Dir also, wie von Dir beschrieben, die Trauben schon in den Mund gehängt werden, muss man sich nun auch noch sagen lassen, dass man Dir die Fragen dazu an die Hand gibt, auf dass wir antworten dürfen, wie wir auf die Lösung gekommen sind?
Versteh mich nicht falsch. Natürlich darfst Du hier immer weiter fragen. Und natürlich wird Dir auch meistens geantwortet werden.
Registriert seit: 24.02.2017
Version(en): 365; (2013)
16.03.2021, 18:45
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2021, 18:50 von StrammerMax.)
Ich finde die Art und Wiese wie hier "geholfen" wird oft ziemlich unsinnig.
Ich weiß, dass ich in der Funktion ein ODER einbauen muss - habe ich ja auch im Ursprungspost so geschrieben. Aber offenbar weiß ich nicht wie genau, da es doch relativ komplex ist wenn;und;oder zusammen zu verknüpfen.
Die Spielereien mit der Vereinfachung der Funktion ist da mal noch ganz außen vor.
Ist es denn wirklich zu viel verlangt dass ihr an einem Teilabschnitt der Funktion einmal das ODER einbaut um mir so ein Praxisbeispiel zu geben?
Habe es dann doch selbst gemacht... zwar dirty.. aber es funktioniert... der Zweck heiligt die Mittel.
Code:
=WENN(WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(CO48)=WAHR;W48<$EC$3);V48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(CR48)=WAHR;Z48<$EC$3);Y48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(CU48)=WAHR;AC48<$EC$3);AB48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(CX48)=WAHR;AF48<$EC$3);AE48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DA48)=WAHR;AI48<$EC$3);AH48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DD48)=WAHR;AL48<$EC$3);AK48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DG48)=WAHR;AO48<$EC$3);AN48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DJ48)=WAHR;AR48<$EC$3);AQ48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DM48)=WAHR;AU48<$EC$3);AT48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DP48)=WAHR;AX48<$EC$3);AW48/L48))))))))))=0;"";WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(CO48)=WAHR;W48<$EC$3);V48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(CR48)=WAHR;Z48<$EC$3);Y48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(CU48)=WAHR;AC48<$EC$3);AB48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(CX48)=WAHR;AF48<$EC$3);AE48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DA48)=WAHR;AI48<$EC$3);AH48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DD48)=WAHR;AL48<$EC$3);AK48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DG48)=WAHR;AO48<$EC$3);AN48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DJ48)=WAHR;AR48<$EC$3);AQ48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DM48)=WAHR;AU48<$EC$3);AT48/L48;WENN(UND(ODER(DY48="in time";DY48="early");ISTLEER(DP48)=WAHR;AX48<$EC$3);AW48/L48;"")))))))))))
Registriert seit: 20.06.2016
Version(en): 2021
16.03.2021, 18:51
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2021, 19:01 von Ego.)
Hallo S...,
A) Warum willst du eine 0 durch "" ersetzen?
Wenn dich nur die Anzeige der 0 stört, kannst du über das Zahlenformat die Anzeige unterdrücken.
B) Änderungen
Im Folgenden nur den hinteren Teil deiner Formel
1. Deine Formel
Code:
=WENN(UND(DY48="in time";ISTLEER(CO48)=WAHR;W48<$EC$3);V48/L48;
WENN(UND(DY48="in time";ISTLEER(CR48)=WAHR;Z48<$EC$3);Y48/L48;
WENN(UND(DY48="in time";ISTLEER(CU48)=WAHR;AC48<$EC$3);AB48/L48;
WENN(UND(DY48="in time";ISTLEER(CX48)=WAHR;AF48<$EC$3);AE48/L48;
WENN(UND(DY48="in time";ISTLEER(DA48)=WAHR;AI48<$EC$3);AH48/L48;
WENN(UND(DY48="in time";ISTLEER(DD48)=WAHR;AL48<$EC$3);AK48/L48;
WENN(UND(DY48="in time";ISTLEER(DG48)=WAHR;AO48<$EC$3);AN48/L48;
WENN(UND(DY48="in time";ISTLEER(DJ48)=WAHR;AR48<$EC$3);AQ48/L48;
WENN(UND(DY48="in time";ISTLEER(DM48)=WAHR;AU48<$EC$3);AT48/L48;
WENN(UND(DY48="in time";ISTLEER(DP48)=WAHR;AX48<$EC$3);AW48/L48;""))))))))))
2. Ausklammern von DY48, Berücksichtigen von "early" und entfernen von "=WAHR"
Code:
=WENN(ODER(DY48="in time";DY48="early");
WENN(UND(ISTLEER(CO48);W48<$EC$3);V48/L48;
WENN(UND(ISTLEER(CR48);Z48<$EC$3);Y48/L48;
WENN(UND(ISTLEER(CU48);AC48<$EC$3);AB48/L48;
WENN(UND(ISTLEER(CX48);AF48<$EC$3);AE48/L48;
WENN(UND(ISTLEER(DA48);AI48<$EC$3);AH48/L48;
WENN(UND(ISTLEER(DD48);AL48<$EC$3);AK48/L48;
WENN(UND(ISTLEER(DG48);AO48<$EC$3);AN48/L48;
WENN(UND(ISTLEER(DJ48);AR48<$EC$3);AQ48/L48;
WENN(UND(ISTLEER(DM48);AU48<$EC$3);AT48/L48;
WENN(UND(ISTLEER(DP48);AX48<$EC$3);AW48/L48;""))))))))));"")
3. Listen anstelle von Einzelwerten
Code:
=WENN(ODER(DY48="in time";DY48="early");INDEX(V48:AW48;;VERGLEICH(1;(CO48:DP48="")*(W48:AX48<$EC$3)*(REST(SPALTE(V48:AW48);3)=1);0))/L48;"")
4. Fehlermeldung abfangen wenn keine Bedingung zutrifft (Vergleich findet keine 1)
Code:
=WENNFEHLER(WENN(ODER(DY48="in time";DY48="early");INDEX(V48:AW48;;VERGLEICH(1;(CO48:DP48="")*(W48:AX48<$EC$3)*(REST(SPALTE(V48:AW48);3)=1);0))/L48;"");"")
ps. Eine komplexere Forme kann man über das Einfügen von Zeilenumbrüchen (Alt+Enter) lesbarer machen.
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.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28
• StrammerMax
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
Das "unsinnig" geben wir an jmd., der schon 500 Fragen gestellt hat, und immer noch nicht unaufgefordert ein Ausschnitts-.xlsx anhängt, gern zurück.