2016-09-09 2 views
0

Ich habe ein ziemlich großes Excel-Dokument, das eine gute Menge vlookups hat, wenn Funktionen, etc. In einigen meiner Tabs kann ich nicht meine IF-Funktionen zu arbeiten, und ich habe meine Logik überprüft 10 mal vorbei. Ich kann mir nicht vorstellen, warum Excel in einem bestimmten Zustand anhält und nicht den Rest meiner Nester überprüft. Hier ist, was eine Probe der Daten sieht aus wieVerschachtelte IF-Funktionen in Excel funktioniert nicht

 AE   AI   AL   AM   AN 
DateResolved DateCreated Response Time Dummy Response Time Bucket 
    1/7/2016 1/1/2016  6    -   0-7 
    1/18/2016 1/3/2016  15    -   15-30 
    1/25/2016 1/4/2016  21    -   15-30 
    1/25/2016 1/4/2016  21    -   15-30 
    1/25/2016 12/31/2015 25    -   15-30 
    NULL  1/4/2016  Outstanding >30 1   >30 
    NULL  1/4/2016  Outstanding >30 1   >30 
    1/26/2016 1/4/2016  22    -   15-30 
    NULL  1/4/2016  Outstanding >30 1   >30 

Ich nehme DateResolved - (MINUS) Datecreated eine Reaktionszeit zu erhalten. Diese Reaktionszeit hat diese geschachtelte IF Funktion:

=IF(AE2="NULL",IF(MAX(AI:AI)-AI2>30,"Outstanding >30","Outstanding <30"),AE2-AI2) 

Das ist großartig, weil es getan hat, was ich wollte. Ausstehende> 30 Tage werden in Spalte AL angezeigt (das maximale Datum in DATE CREATED ist irgendwann im Juli, aber es ist abgeschnitten, deshalb ist die IF-Anweisung erfüllt, wenn DateResolved = NULL, max DateCreated - DateCreated> 30, Response Time wird wie folgt zurückgegeben) herausragende> 30" .

das Problem liegt in der Spalte aN - Reaktionszeit Bucket Hier ist die Formel:

=IF(AL2<=7,"0-7",IF(AL2<=14,"8-14",IF(AL2<=30,"15-30",IF(AL2>30, ">30",IF(AL2="Outstanding >30",AL2," Outstanding <30"))))) 

ich einfach nur aN wollen zurückzukehren. "Outstanding> 30", wenn AL ist „Outstanding> 30 "und" Hervorragende < 30 "zurückgeben, wenn AL" Hervorragend < 30 "ist. Die Formel scheint nach dem vierten Nest zu stoppen, und knallt meine" Outstanding "-Antwortzeiten in"> 30 ", die ich NICHT will.

Ich habe diese vielen verschiedenen Möglichkeiten ausprobiert. Zuerst habe ich AL2 im letzten Nest für "Outstanding> 30" ersetzt. Ich habe auch versucht, ein Dummy-Spalte in AM schaffen, in dem die Formel = if (AL2 = „Ausstehende> 30“, 1,0) und dann die in Spalte AN ersetzt wird. Ich habe mein letztes Nest als IF gesetzt (AM2 = 1, "Outstanding> 30", "Outstanding < 30"). Es hat immer noch nicht funktioniert. Es hört nach dem 4. Nest auf und sagt "> 30". Ich versuchte sogar aus, die Zahlen zu nehmen und ersetzt „Outstanding> 30“ in der Spalte AL mit OST und „OST“ in meine Formel ersetzt, so dass der Excel nicht fälschlicherweise das letzte Stück „Outstanding> 30“ zu lesen.

UPDATE: Ich habe die Formel bearbeitet zu „> 30“ als das letzte Stück meiner Formel zu umfassen, das heißt, es ist das, was angezeigt wird, wenn die Bedingung falsch ist. Ich bin mir nicht sicher, warum es funktioniert hat, aber es funktioniert. Hier ist es:

=IF(O2<=7,"0-7",IF(O2<=14,"8-14",IF(O2<=30,"15-30",IF(O2="Outstanding >30","Outstanding >30",IF(O2="Outstanding <30","Outstanding <30",">30")))))` 

Weiß jemand warum?

Antwort

0

Der Grund dies geschieht, ist, dass

"Outstanding >30">30 

zu TRUE auswertet.

Aus irgendeinem Grund scheint es, dass Excel Text als größer als jeder Zahlenwert behandelt, wenn ein Vergleich wie dies zu tun.

0

Ihre Formel reorganisieren:

=IF(ISNUMBER(AL2),IF(AL2<=7,"0-7",IF(AL2<=14,"8-14",IF(AL2<=30,"15-30",">30"))),AL2) 

enter image description here

0

Es ist wichtig zu verstehen, wie Excel Text behandelt (einschließlich Text, die Zahlen enthält). Wenn Sie den Wert "Outstanding> 30" mit einer beliebigen Zahl vergleichen, ist "Outstanding> 30" immer höher. Mit anderen Worten:

="Outstanding >30" > 999999 

wird ausgegeben TRUE.

Es gibt mehrere Möglichkeiten, Ihre Formel zu ändern. Ich schlage vor, Sie überprüfen, ob AL2 = "Outstanding> 30" und "Outstanding < 30" am Anfang Ihrer Formel, bevor Sie die Anzahl der Tage überprüfen.

Hier ist eine Überarbeitung Ihrer Formel. Beachten Sie die Verwendung der Funktion OR.

=IF(OR(AL2="Outstanding >30", AL2="Outstanding <30"), AL2, IF(AL2<=7,"0-7",IF(AL2<=14,"8-14",IF(AL2<=30,"15-30",IF(AL2>30, ">30",IF(AL2="Outstanding >30",AL2," Outstanding <30")))))) 

Haben Sie auch eine Leerstelle am Ende der Formel eingefügt?

Schließlich können Sie eine Spalte hinzufügen, die die Antwortzeit nur mit Zahlen berechnet (kein Text). Auch wenn Sie eine Spalte mit Text behalten, können Sie die zugrundeliegende Zahl verwenden, um diesen Text zu berechnen. Außerdem könnte die Formel die Funktion TODAY() als aufgelöstes Datum verwenden, wobei der Wert NULL ist, wenn

Verwandte Themen