Ich habe eine Tabelle, in der der Benutzer eine chemische Formel hinzufügt, indem er nacheinander Elemente hinzufügt (die Tabelle hat 5 Zeilen), und ich versuche, den Ungesättigtheitsgrad auf zwei Arten zu berechnen. Der Benutzer muss die Art angeben, indem er 1 oder 2 in eine Zelle schreibt, dann gibt es diese if-Anweisung:
=IF(N16=1,((2*IF(ISBLANK(C8),0,(C8*(D8-2)))-(IF(ISBLANK(C9),0,(C9*(D9-2))-IF(ISBLANK(C11),0,(C11*(D11-2))+IF(ISBLANK(C12),0,(C12*(D12-2)))/2),(2+(IF(ISBLANK(C8),0,(C8*(D8-2))+IF(ISBLANK(C9),0,(C9*(D9-2))+IF(ISBLANK(C11),0,(C11*(D11-2))+IF(ISBLANK(C12),0,(C12*(D12-2)))))))))
Diese ISBLANKs dienen dazu, zu überprüfen, ob in der Zelle ein Element geschrieben ist oder nicht
Antwort1
Nun, wenn man nur diese Formel betrachtet, ist es schwer, den Sinn Ihres Tuns zu erkennen.
WENNNimmt man im Wesentlichen Ihren Plan an, mit Ausnahme der Excel-Fehlerberichte, dann hat man folgendes Konzept in seiner Formel:
WENN eine Bedingung (in diesem Fall N16=1) WAHR ist, dann melde DIES (was auch immer „DIES“ ist), und wenn sie nicht WAHR ist, melde DIES (was auch immer „DIES“ ist) TROTZDEM.
Das läuft darauf hinaus, dasselbe zu sein wie das Folgende:
=IF(A1=1,50,50)
Der Punkt ist, dass wenn Sie für TRUE und FALSE die gleichen Ergebnisse erhalten, dann hat das keinen Sinn IF()
. Beachten Sie, dass es Gründe außerhalb der Logik der Situation geben kann und wer weiß, vielleicht trifft einer davon zu. Da Sie keine Informationen liefern, die für die Lösung von THAT von Bedeutung sind, kann man das nicht sagen. Aber wenn das nicht der Fall ist, und das scheint sehr wahrscheinlich, warum sollte man IF()
dann überhaupt das verwenden?
Daher ist hier nur das Ergebnis WAHR oder FALSCH von Bedeutung (da es dasselbe ist). Sie können Ihre Formel vereinfachen, indem Sie nur einen dieser Teile der Formel verwenden.
Das ist, wenn Sie es "vereinfachen" möchten. Wenn Sie lieberStark vereinfachenes, dann überlegen Sie, was jeder Test bewirkt. Ihr grundlegendes Ergebnis in jedem Test ist, 2 von einer Zelle abzuziehen und es dann mit der Testzelle zu multiplizieren. Cool. Wenn diese Testzelle leer ist, wird Excel sie als 0 betrachten und diese Multiplikation wird Ihnen 0 ergeben. Warum also die Mühe machen, zu testen, ob sie leer ist, wenn der Grund dafür darin besteht, das Ergebnis auf 0 zu bringen?Die eigentliche Multiplikation erledigt dies für Sie, ohne dass etwas anderes erforderlich ist.Wenn Sie den Mehraufwand und die ganze IF()
Idee weglassen, erhalten Sie Folgendes:
=(2 * C8*(D8-2) - C9*(D9-2) - C11*(D11-2) + C12*(D12-2) ) /2
und da es keinen Grund zu geben scheint, das mit 2 zu multiplizieren und dann durch 2 zu dividieren, ziehen wir das ebenfalls heraus:
=C8*(D8-2) - C9*(D9-2) - C11*(D11-2) + C12*(D12-2)
Ich gehe davon aus, dass das erwartete „C10*(D10-2)“ aus guten Gründen nicht vorhanden ist, und mache weiter.
Wenn ich an dieser Stelle mit der Vereinfachung aufhöre (da alles Weitere in diesem Fall technisch gesehen ohnehin eher eine „Rationalisierung“ als eine „Vereinfachung“ ist), möchte ich auf einen großen Vorteil hinweisen, der sich aus der Verwendung der obigen Formel und nicht Ihrer Formel ergibt:
Es ist so einfach und leicht zu tippen oder zu generieren, dass dumme Eingabefehler kaum passieren sollten und es außerordentlich einfach sein sollte, sie zu erkennen, falls sie passieren. Vergleichen Sie Ihre Formel und der Vorteil sollte leicht zu erkennen sein.
Dies und nicht die oben beschriebenen besonderen Tricks des Fachs ist der wichtige Teil dieser Antwort.