需要帮助解决 Excel 2013 中复杂的嵌套 IF THEN

需要帮助解决 Excel 2013 中复杂的嵌套 IF THEN

我正在尝试编写一个复杂的IF THEN语句。如果是 A,则根据参数创建文本。如果是 B,则根据不同的参数创建文本。如果是 C,则根据一组新参数创建文本。下面的语言都可以单独使用 - 我无法“失败”并在第一个 IF 上进入第二个。有人知道怎么做吗?谢谢!

IF([@[Pre-Post Aug 2019]]="Aug 2019 Month",
IF(AND(W2>=DATEVALUE("07/22/2018"),W2<=DATEVALUE("07/28/2019")),"BA Week 1",IF(AND(W2>=DATEVALUE("07/29/2019"),W2<=DATEVALUE("08/04/2019")),"BA Week 2",IF(AND(W2>=DATEVALUE("08/05/2019"),W2<=DATEVALUE("08/12/2019")),"BA Week 3",IF(AND(W2>=DATEVALUE("08/13/2019"),W2<=DATEVALUE("08/20/2019")),"BA Week 4",IF(AND(W2>=DATEVALUE("08/21/2019"),W2<=DATEVALUE("08/28/2019")),"BA Week 5",
"Something Else")))))))))))))

IF([@[Pre-Post Aug 2019]]="Pre Aug 2019 Month",
IF(AND([@[BA:  Day]]>0,[@[BA:  Day]]<6),"BA Week 2",
IF(AND([@[BA:  Day]]>29,[@[BA:  Day]]<32),"BA Week 2",
IF(AND([@[BA:  Day]]>5,[@[BA:  Day]]<14),"BA Week 3",
IF(AND([@[BA:  Day]]>13,[@[BA:  Day]]<22),"BA Week 4",
IF(AND([@[BA:  Day]]>21,[@[BA:  Day]]<30),"BA Week 1",
IF([@[BA:  Day]]>31,"Check It",
"Something Else")))))))))))))

IF([@[Pre-Post Aug 2019]]="Post Aug 2019 Month",
IF(AND([@[BA:  Day]]>28,[@[BA:  Day]]<31),"BA Week 1",
IF(AND([@[BA:  Day]]>0,[@[BA:  Day]]<6),"BA Week 1",
IF(AND([@[BA:  Day]]>5,[@[BA:  Day]]<13),"BA Week 2",
IF(AND([@[BA:  Day]]>12,[@[BA:  Day]]<21),"BA Week 3",
IF(AND([@[BA:  Day]]>20,[@[BA:  Day]]<29),"BA Week 4",
IF([@[BA:  Day]]>31,"Check It",
"Something Else")))))))))))))

答案1

从记忆中看,您不能将 IF 嵌套超过 7 层。但这可能是对旧版本的模糊记忆,现在的限制可能更高。

无论如何,所有那些符合 AND(foo>bar, foo) 的位

还要注意,你的数字范围是相互排斥的,因此其中没有两个可以同时为真。因此,

IF(A, do thing for A, [else]IF(B, ...IF(C,...

全部嵌套起来,您可以采取一些措施使它们保持独立而不是嵌套,然后将结果连接起来,例如:

IF(A,result for A,"") & IF(B,result for B,"") & IF(C, etc

这种方式效率稍低,因为它们都必须进行求值,但您的示例似乎表明测试非常简单,没有查找等“昂贵”的功能。因此,所有表达式都经过求值,除了一个表达式外,其他所有表达式都返回“”,因此您最终只得到所需的表达式,但您一次不使用多个嵌套级别,并且应该能够将三个部分放在一起。

您甚至可以对顶层部分执行相同的操作,因为它们似乎针对三种不同的可能选项测试同一件事 - 只需获取您所拥有的内容并使用 & 将它们连接在一起

相关内容