Hei,
ich sehe den Fehler in folgender Formel nicht:
=WENN(7*L35>C43>=5*L35;0,85+(0,7-0,85)/(7*L35-10*L35)*(C43-10*L35);"nicht möglich")
Die Formel soll zuerst abfragen, ob sich der Wert C43 in einem bestimmten Bereich befindet. Wenn ja, dann soll sie diesen Wert linear interpolieren und nach der Formel berechnen. Wenn sich der Wert nicht in diesem Berech befindet, ist wohl C43 falsch und daher nicht möglich. Nur leider spuckt mir die Formel in jedem Fall "nicht möglich" aus. Der Wert C43 hängt unter anderem auch von L35 ab. Hab ich da einen totalen Ueberlegungsfehler gemacht? Wer kann mir helfen? Ich bin ein Anfänger, aber möchte sehr gerne endlich Calc und Excel lernen.
Um noch zu präzisieren: Die obige Formel ist Teil dieser grossen Formel:
=WENN(O35="Nein";WENN(C43>=14*L35;1;WENN(14*L35>C43>=10*L35;1+(0,85-1)/(10*L35-14*L35)*(C43-14*L35);WENN(10*L35>C43>=7*L35;0,85+(0,7-0,85)/(7*L35-10*L35)*(C43-10*L35);WENN(7*L35>C43>=5*L35;0,85+(0,7-0,85)/(7*L35-10*L35)*(C43-10*L35);"nicht möglich"))));WENN(O35="Ja";WENN(C43>=14*L35;1;WENN(14*L35>C43>=10*L35;1+(0,85-1)/(10*L35-14*L35)*(C43-14*L35);WENN(10*L35>C43>=7*L35;0,85+(0,7-0,85)/(7*L35-10*L35)*(C43-10*L35);WENN(7*L35>C43>=4*L35;0,7+(0,5-0,7)/(4*L35-7*L35)*(C43-7*L35);"nicht möglich"))));""))
Die ganze Formel gibt mir auch immer "nicht möglich". Grundsätzlich soll die Formel prüfen in welchem Bereich sich C43 befindet und dann C43 linear interpolieren, mit ein paar Randbedingungen. Zuerst soll sie aber noch abfragen, ob O35 "Ja" oder "Nein" ist. Ich glaube es gibt einen einfacheren Befehl, statt diese ganzen "wenn"-Verschachtelungen. Kann mir das jemand erklären, wie ich das einfacher machen kann?
Besten Dank!
Simon
Sehe Formelfehler nicht
Moderator: Moderatoren
Re: Sehe Formelfehler nicht
Morgen Simon,
=WENN(5>3>1;1;0)
funktioniert nicht. Nimm:
=WENN(UND(5>3;3>1);1;0)
cu, Bernd
=WENN(5>3>1;1;0)
funktioniert nicht. Nimm:
=WENN(UND(5>3;3>1);1;0)
cu, Bernd
Re: Sehe Formelfehler nicht
ich kann DEine Beobachtung nicht bestätigen, denn bei mir gibt die TEilformel zunächst einmal einen 'Divion durch Null'-Fehler, weil der Teil (7*L35-10*L35)*(C43-10*L35) bei mir (leere Tabelle) natürlich 0 Null.
Im Übrigen würde ich an dEiner Stelle eine Beispieldatei zur Verfügung stellen, weil cdas das Antworten für Andere erleichtert, evtl. sogar konkrete Antworten erstz möglich macht.
Gruß
Stephan
Im Übrigen würde ich an dEiner Stelle eine Beispieldatei zur Verfügung stellen, weil cdas das Antworten für Andere erleichtert, evtl. sogar konkrete Antworten erstz möglich macht.
Gruß
Stephan
Re: Sehe Formelfehler nicht
Besten Dank Bernd und Stephan.
Das mit dem UND() hat geklappt. Super. Nur bin ich mir nicht sicher, ob die Berechnung, die die Formel macht auch wirklich stimmt. Denn nach der geschriebenen Formel, gibt es auch einen Fall, wo das ganze 1 ergeben sollte. Ich habe das ausprobiert, aber es gibt eigentlich immer etwas, was kleiner 1 ist. Vielleicht ist es ein Fehler in der Norm Eurocode5, wo ich alle diese Fälle herausgenommen habe, also, dass es gar nie 1 ergeben kann. Das wäre schon noch wichtig. Denn, diese Formel ergibt mir eigentlich ein Faktor mit dem ich das Tragvermögen einer Verbindung im Baubereich reduzieren muss. Wenn diese um 20% verringert wird, dann ist das enorm viel.
Gibt es einfachere Möglichkeiten, solche Probleme zu lösen, statt immer diese "wenn"-Fälle zu verschachteln?
Gruss
Simon
Das mit dem UND() hat geklappt. Super. Nur bin ich mir nicht sicher, ob die Berechnung, die die Formel macht auch wirklich stimmt. Denn nach der geschriebenen Formel, gibt es auch einen Fall, wo das ganze 1 ergeben sollte. Ich habe das ausprobiert, aber es gibt eigentlich immer etwas, was kleiner 1 ist. Vielleicht ist es ein Fehler in der Norm Eurocode5, wo ich alle diese Fälle herausgenommen habe, also, dass es gar nie 1 ergeben kann. Das wäre schon noch wichtig. Denn, diese Formel ergibt mir eigentlich ein Faktor mit dem ich das Tragvermögen einer Verbindung im Baubereich reduzieren muss. Wenn diese um 20% verringert wird, dann ist das enorm viel.
Gibt es einfachere Möglichkeiten, solche Probleme zu lösen, statt immer diese "wenn"-Fälle zu verschachteln?
Gruss
Simon
- Dateianhänge
-
- Erste Berechnung.ods
- (12.46 KiB) 74-mal heruntergeladen
Re: Sehe Formelfehler nicht
Hallo
Sowas wie =WENN(7*L35>C43>=5*L35;.. geht nicht, da müsste man schreiben:
=WENN((7*L35>C43)*(C43>=5*L35);..
Innerhalb der langen Formel ist eine der Prüfungen aber völlig sinnfrei da diese Prüfung schon in der Bedingung "vorher" stattfand.:
WENN(C43>=14*L35;1;WENN(14*L35>C43
die rote Prüfung ist überflüssig, da die Funktion wg grün andernfalls gar nicht diesen Zweig betritt.
Sowas (10*L35-14*L35) könntest du doch eigentlich zusammenfassen zu (-4*L35)
ebenso (0,85-1) → -0,15
Und vermutlich lässt sich dein knapp 5 Zeilen langes Formelmonster mit SVERWEIS und Co auf eine halbe Zeile reduzieren.
Dazu bräuchte man aber mal eine Beispielsdatei.
Karo
Sowas wie =WENN(7*L35>C43>=5*L35;.. geht nicht, da müsste man schreiben:
=WENN((7*L35>C43)*(C43>=5*L35);..
Innerhalb der langen Formel ist eine der Prüfungen aber völlig sinnfrei da diese Prüfung schon in der Bedingung "vorher" stattfand.:
WENN(C43>=14*L35;1;WENN(14*L35>C43
die rote Prüfung ist überflüssig, da die Funktion wg grün andernfalls gar nicht diesen Zweig betritt.
Sowas (10*L35-14*L35) könntest du doch eigentlich zusammenfassen zu (-4*L35)
ebenso (0,85-1) → -0,15
Und vermutlich lässt sich dein knapp 5 Zeilen langes Formelmonster mit SVERWEIS und Co auf eine halbe Zeile reduzieren.
Dazu bräuchte man aber mal eine Beispielsdatei.
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Sehe Formelfehler nicht
Ok, besten Dank Karo.
Ich wusste nicht, dass das UND() auch mit einem einfachen * ersetzt werden kann. Habe ich das denn auch richtig verstanden?
Die Zusammenfassungen, die du mir vorgeschlagen hast, sind schon klar und "nur" mathematischer Natur. Für mich ist es wichtig, dass ich die Faktoren mit denen L35 multipliziert wird beibehalte, da je nach Verbindungsmittel diese anders sein können. Sonst verliere ich den Ueberblick.
Ok, das mit der Prüfung, die die vorrangige ausschliesst, muss ich mir nochmals anschauen.
Besten Dank.
Simon
Ich wusste nicht, dass das UND() auch mit einem einfachen * ersetzt werden kann. Habe ich das denn auch richtig verstanden?
Die Zusammenfassungen, die du mir vorgeschlagen hast, sind schon klar und "nur" mathematischer Natur. Für mich ist es wichtig, dass ich die Faktoren mit denen L35 multipliziert wird beibehalte, da je nach Verbindungsmittel diese anders sein können. Sonst verliere ich den Ueberblick.
Ok, das mit der Prüfung, die die vorrangige ausschliesst, muss ich mir nochmals anschauen.
Besten Dank.
Simon
-
- *******
- Beiträge: 1763
- Registriert: Di, 03.10.2006 18:05
Re: Sehe Formelfehler nicht
Hallo Simon,
hier findest Du eine Erklärung der Funktion SVERWEIS, die von
Karolus vorgeschlagen wird :
http://www.ooowiki.de/CalcFunktionenTab ... C_WVERWEIS
ich hoffe das hilft weiter.
mfg
Gert
hier findest Du eine Erklärung der Funktion SVERWEIS, die von
Karolus vorgeschlagen wird :
http://www.ooowiki.de/CalcFunktionenTab ... C_WVERWEIS
ich hoffe das hilft weiter.
mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
Win7_64 / LO_4.4.5.2
Re: Sehe Formelfehler nicht
Jein. Tatsächlich wird – etwas lax formuliert – "ein Stückchen Logik auf die Arithmetik abgebildet". Dies ist möglich, weil die Booleschen Werte WAHR und FALSCH programm-intern mit den Ganzzahl-Werten 1 und 0 dargestellt werden. Daraus ergibt sich die Möglichkeit, einen logischen Ausdruck äquivalent als arithmetischen Ausdruck zu formulieren.schimox hat geschrieben:Ich wusste nicht, dass das UND() auch mit einem einfachen * ersetzt werden kann. Habe ich das denn auch richtig verstanden?
Nehmen wir den den von Karolus in der ersten WENN-Funktion diskutierten Ausdruck (zunächst mal in einer "rein" logischen Formulierung)
- UND((7*L35>C43);(C43>=5*L35))
- (7*L35>C43)
(C43>=5*L35)
- WAHR ∧ WAHR = WAHR
WAHR ∧ FALSCH = FALSCH
FALSCH ∧ WAHR = FALSCH
FALSCH ∧ FALSCH = FALSCH
- logisches WAHR ⟼ arithmetische 1
logisches FALSCH ⟼ arithmetische 0
- 1 * 1 = 1
1 * 0 = 0
0 * 1 = 0
0 * 0 = 0

- ((7*L35>C43)*(C43>=5*L35))
Gruß
lorbass