Warum wird eine Bedingung in der IF/AND-Anweisung übersehen?

Warum wird eine Bedingung in der IF/AND-Anweisung übersehen?

Ich habe die folgende Formel verwendet.

=TRIM(
IFERROR(IF(AND($T9-TODAY()>=Key!$N$14,$T9-TODAY()<=Key!$M$14,$AA9<>"Complete",$G9<>"New Phase",$T9<>""),Key!$L$11,""),"Error")
)

Mir fiel auf, dass der Teil „Fehler“ IFERRORausgeführt wurde. Nachdem ich meine Formel überprüft hatte, war ich mir ziemlich sicher, dass der Grund darin lag, dass die Spalte T manchmal leer war. Also führte ich die folgende Prüfung durch $T9<>"". Seitdem ich diese hinzugefügt habe, wird der „Fehler“ jedoch immer noch angezeigt.

Sollte meine hinzugefügte Bedingung nicht dazu führen, dass der "FALSCH"-Teil der Bedingung ausgeführt wird? Was einfach "" ist.

Hat jemand eine Ahnung?

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Antwort1

Ihre Formel weist keinen Konstruktionsfehler auf, das Problem liegt also nicht an dieser Ursache. So wie sie geschrieben ist, funktioniert sie logisch, daher muss der Fehler entweder an den Verwendungsfunktionen und dergleichen oder an den Werten liegen, die sie verwenden.

Mit „die Verwendungsfunktionen werden verwendet“ meine ich, dass die Bildung einer Verwendung manchmal aufgrund von Zwischenschritten, an die man nicht denkt, Probleme verursacht. Um beispielsweise ein falsches Beispiel zu verwenden – „falsch“, weil es nicht wirklich etwas ist, das ein Problem verursachen würde (aber mir fällt kein echtes Beispiel ein) – nehmen wir an, das Problem läge darin, TODAY()von einem Wert zu subtrahieren und diesen dann mit einem anderen Wert zu vergleichen. Wie:

=$T9 - TODAY() <= Key!$M$14

Stellen Sie sich vor, dass Excel einen Fehler ausgeben würde, wenn die linke Hälfte bei der Auswertung dieser Formel einen negativen Wert ergeben würde. (Das tut es NICHT, da Excel bei der Verarbeitung keine „Typ“-Überlegungen vornimmt, also kein Datumsergebnis erwartet und daher keinen Fehler ausgibt, wenn ein negativer Wert resultiert. Aber tun Sie so.) Excel würde also diesen negativen Wert als ersten Schritt bei der Auswertung der Formel erhalten und sofort einen Fehler ausgeben, nicht in der Folge. Es würde diesen Fehler in jede spätere Berechnung übernehmen und das Endergebnis IFERROR()wäre ein Fehler und würde Ihnen dieses Ergebnis liefern.

(Auch das ist nur so getan. Aber als Beispiel, wie Sie das schnell umgehen könnten, könnten Sie es einfach algebraisch TODAY()auf die rechte Seite verschieben, wo es vermutlich zu einem positiven Wert addiert würde, sodass es bei der Auswertung nie ein negatives Zwischenergebnis liefern und somit nie einen Fehler auslösen könnte. Nach der Auswertung würde die rechte Seite den Datumsaspekt verlieren, da sie nur noch eine Zahl wäre, und der ganze Spaß wäre vorbei. Daher sind oft einfache Lösungen verfügbar.)

Wie gesagt, das ist KEIN Problem mit irgendeiner Komponente Ihrer Formel. Jetzt bleibt Ihnen also nur noch die einzige echte Möglichkeit: some component (cell) used in one of theAND() components contains an error.

Dies gilt unabhängig davon, ob Sie dies beispielsweise ausdrücklich wünschen Key!$M$9oder Key!$M$14nicht T14oder T9ähnliche Gegenleistungen wünschen.(Außer auf indirekte Weise: Wenn es ein falsch gewähltes Element in der Formel gibt, sagen wir, dass das T9Muss- T14UND T9zufällig einen Fehler enthält, während T14das Nicht-UND der Fall ist.)

Wählen Sie also eine Verwendung der Formel, die die Formel aktiviert, anstatt sie IFERROR()erfolgreich auszuwerten, und sehen Sie sich jede der darin referenzierten Zellen an. Eine gute und schnelle Möglichkeit, dies zu tun, besteht darin, die Formel in eine der Zellen zu kopieren, die die Formel ergibt Error(drücken Sie F2, markieren Sie alles und klicken Sie auf Kopieren, gehen Sie dann an eine leere Stelle, damit Sie arbeiten können, ohne etwas zu beschädigen, und drücken Sie F2 und Einfügen – die Formel hat genau dieselben Referenzen wie dort, wo Sie sie her haben). Geben Sie dann in die Zellen unter der Formel =und jede Zellreferenz ein. Also:

=T9
=Key!$n$14

und so weiter. Jetzt sehen Sie sozusagen alles im Klaren. Wenn eine der Komponenten einen Excel-Fehler anzeigt (z. B. wenn die Zelle für ihr Ergebnis durch 0 dividiert wird), haben Sie einen Schuldigen. Mit etwas Glück nur einen Schuldigen.

Dies ist häufig ein Problem beim Erstellen einer Kalkulationstabelle, da man eine Teständerung vornimmt, dann feststellt, dass noch eine und noch eine weitere Änderung erforderlich ist, um den Test durchzuführen, und so weiter, wodurch mehrere Arbeitsverzweigungen erzeugt werden, man aber den Pfad nicht zurück zum richtigen Ausgangspunkt findet, um die verschiedenen erforderlichen Änderungen vorzunehmen (statt die Verzweigungen zu integrieren, quetscht man also am Ende ein paar oder mehr auf seltsame Weise ineinander) und dies führt häufig zu echten Nichtübereinstimmungen bei den verwendeten Zelladressen, wie den scheinbar nicht übereinstimmenden Adressen T9 und Key!$M$14. Aber so wie diese scheinbare Nichtübereinstimmung stattdessen durchaus eine perfekte Übereinstimmung sein könnte, führt dieser Pfad möglicherweise nicht dorthin. Nur häufig.

Ich würde jedoch sagen, dass das bei Weitem häufigere Problem darin besteht, dass vorhergehende Formeln zu Fehlern führen und der Aufruf ihrer Zellen in abhängigen Formeln daher zu Fehlerergebnissen führt. Das kann viele Gründe haben, aber da die Leute normalerweise der Meinung sind, dass Probleme mit Formeln Konstruktionsprobleme sind, schauen sie selten auf die tatsächlich aufgerufenen Zellen zurück. Insbesondere, wenn die erste Verwendung problemlos funktioniert hat und nur einige der „kopierten und eingefügten“ Formeln zu Fehlern führen.

Wie auch immer Sie vorgehen, Sie müssen eines der Fehlerergebnisse auswählen und sich JEDE angesprochene Komponentenzelle ansehen, unabhängig davon, ob Sie „wissen“, dass eine oder mehrere davon „einfach keinen“ Fehler verursachen können.

Eine Sache, die ich vergessen habe zu erwähnen, ist, dass ich die Formel eingerichtet habe, bis hin zu Blattnamen mit Blättern und so weiter, und sie funktioniert PERFEKT. Bis ich einen Fehlerzustand in einer der referenzierten Zellen erzeuge. Sie funktioniert also wie konstruiert und liefert ein korrektes Ergebnis für die WAHR- und FALSCH-Verzweigungen Ihres IF()Tests – in einem sorgfältigen Setup, das keine Fehler in den referenzierten Zellen aufweist. Wenn jedoch in einer der Zellen ein Fehler auftritt, wird zum Ergebnis zurückgesprungen IFERROR().

Antwort2

Ich gehe davon aus, dass sich die Formel in A18 auf T18 bezieht (die gezeigte Formel verwendet T9). Sie sollten IF(T9<>"" in IF(ISBLANK(T9) ändern. <>"" gibt nur dann TRUE aus, wenn dort ein Leerzeichen steht. Der Screenshot unten zeigt ähnliche Ergebnisse mit den Formeldetails und referenzierten Zellinhalten

Bildbeschreibung hier eingeben

Hoffentlich hilft das.

verwandte Informationen