Excel中的嵌套IF函数无法正常工作

时间:2016-09-09 15:54:29

标签: excel function excel-formula excel-2013

我有一个很大的excel文档,有大量的vlookup,如果函数等等。在我的一些标签中,我无法使我的IF函数工作,我已经检查了我的逻辑10次。我似乎无法弄清楚为什么excel会在某种情况下停止并且不会检查其余的巢穴。这是数据样本的样子

      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 

我正在使用DateResolved - (MINUS)DateCreated来获取响应时间。此响应时间具有此嵌套IF函数:

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

哪个好,因为它做了我想要的。 AL列中显示优秀的&gt; 30天(DATE CREATED中的最大日期是7月份的某个时间,但它被截断,这就是为什么当DateResolved = NULL,最大DateCreated时满足IF语句的原因 - DateCreated &gt; 30,响应时间返回为&#34; Outstanding&gt; 30&#34;。

问题在于AN列 - 响应时间段。这是公式:

=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")))))

我只是想让AN回归&#34;杰出&gt; 30&#34;当AL为&#34; Outstanding&gt; 30&#34;并返回&#34;杰出&lt; 30&#34;当AL是&#34;杰出&lt; 30&#34;。这个公式似乎在第四个巢之后停止了,并将我的&#34; Outstanding&#34;响应时间为&#34;&gt; 30&#34;,我不想要。

我尝试了很多不同的方法。首先,我在最后一个巢中替换了AL2,其中&#34; Outstanding&gt; 30&#34;。我还尝试在列AM中创建一个虚拟,其中公式为= if(AL2 =&#34; Outstanding&gt; 30&#34; 1,0)然后将其替换为AN列。我将我的最后一个巢设置为IF(AM2 = 1,&#34; Outstanding&gt; 30&#34;&#34; Outstanding&lt; 30&#34;)。它仍然没有奏效。它仍然在第四个巢后退出并且说&#34;&gt; 30&#34;。我甚至尝试取出数字并替换了#34; Outstanding&gt; 30&#34;在AL列中用OST代替&#34; OST&#34;进入我的公式,以便excel不会错误地阅读&#34; Outstanding&gt; 30&#34;。

更新:我编辑了公式以包含&#34;&gt; 30&#34;作为我的公式的最后一部分,即如果条件为FALSE则出现。我不确定它为什么会起作用,但确实如此。这是:

=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")))))`

有谁知道为什么?

3 个答案:

答案 0 :(得分:0)

发生这种情况的原因是

"Outstanding >30">30

正在评估TRUE

无论出于何种原因,在进行这样的比较时,Excel似乎将文本视为大于任何数值。

答案 1 :(得分:0)

重新组织你的公式:

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

enter image description here

答案 2 :(得分:0)

了解Excel如何处理文本(包括包含数字的文本)非常重要。比较值&#34; Outstanding&gt; 30&#34;任何数字,&#34;杰出&gt; 30&#34;永远都会更高。换句话说:

="Outstanding >30" > 999999

将输出TRUE

有多种方法可以修改公式。我建议你检查AL2 =&#34; Outstanding&gt; 30&#34; &#34;杰出&lt; 30&#34;在检查天数之前,在公式的开头。

这是对你的公式的修改。请注意使用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"))))))

另外,您是否打算在公式的末尾添加空格?

..." Outstanding <30"

最后,您可以考虑添加一个仅使用数字计算响应时间的列(无文本)。即使您使用文本保留列,也可以使用基础数来计算该文本。此外,您的公式可能会使用TODAY()函数作为已解决的日期,其值为NULL,如果