我有一个很大的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")))))`
有谁知道为什么?
答案 0 :(得分:0)
发生这种情况的原因是
"Outstanding >30">30
正在评估TRUE
。
无论出于何种原因,在进行这样的比较时,Excel似乎将文本视为大于任何数值。
答案 1 :(得分:0)
答案 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
,如果