如何连接多个 if 语句结果

如何连接多个 if 语句结果

我正在开发一个简单的系统,该系统将生成在TODAY()日期后五天内即将发生的任务的名称。我成功地填充了一个案例。但是,假设有两个即将到来的作业都在五天内到期,我很难尝试显示两个结果。

到目前为止,这是我的公式:

=IF(AND($W12-TODAY()>=-5,$Y12<>"Yes"),"Invite 1",IF(AND($Z12-TODAY()>=-5,$AB12<>"Yes"),"Invite 2"))

此公式将包含 7-8 个针对特定日期的 if 语句。

如果第一个条件为真,我的公式就会停止...即使第二个条件也为真。如果两个条件都为真,我无法弄清楚如何填充两个结果。然后让它以连接的逗号分隔值格式填充。

我做错了什么?请参阅下面的表格以供参考。

在此处输入图片描述

在此处输入图片描述

答案1

实际上,您需要处理四种不同的情况:1) 两个条件都为真时返回“邀请 1 和 2”2) 条件 1 为真时返回“邀请 1”,3) 条件 2 为真时返回“邀请 2”以及 4) 任一条件为真时返回“”。在 Excel 中使用 IF 时,如果条件为真,则第二个“ELSE”参数根本不会执行,因此放置条件的顺序很重要:

=IF(AND(daydiff1 >= 5, daydiff2 > 5), "Invite 1" & "; " & "Invite 2", IF(daydiff1 >= 5, "Invite 1", IF(daydiff2 >= 5, "Invite 2", "")))

附言:我在这里使用“daydiff”只是作为您实际参考的标记。

,如果您想要更花哨一点,可以使用 CHOOSE 代替(效率更高,因为您不必重复相同的比较操作):

=CHOOSE((daydiff1 >= 5)*1 + (daydiff2 >=5)*2 + 1, "", "Invite 1", "Invite 2", "Invite 1 and 2")

或者如果您有多个日期需要检查并且条件是:

="Invite " & MID(IF(AND(daydiff1 >=5, flag1 <> "yes"), " & 1","") & IF(AND(daydiff2 >=5, flag2 <> "yes"), " & 2","") & IF(AND(daydiff3 >=5, flag3 <> "yes"), " & 3","") & ... & IF(AND(daydiff6 >=5, flag6 <> "yes"), " & 6",""), 4, 50)

或者

=CHOOSE(AND(daydiff1 >= 5, flag1 <> "yes")*2^0 + (daydiff2 >=5, flag2 <> "yes")*2^1 + (daydiff3 >=5, flag3 <> "yes")*2^2 + ... + (daydiff8 >=5, flag8 <> "yes")*2^7 + 1, "", "text1", "text2", "text1,2", "text3", "text1,3", "text2,3", "text1,2,3", "text4", "text1,4", "text2,4", "text3,4", "text1,3,4", "text2,3,4", "text1,2,3,4", ..., "text1,2,3,4,5,6,7,8")

后一种方法的问题在于,您添加的任务越多,可能的组合就越多。2 个任务在 CHOOSE 中有 2^2=4 个文本答案列表。8 个任务 => 2^8 = 256 个文本答案列表(但 CHOOSE 最多有 254 个)。

我更喜欢连接单个消息而不是组合:

=MID(IF(AND(daydiff1 >=5, flag1 <> "yes"), " & text1","") & IF(AND(daydiff2 >=5, flag2 <> "yes"), " & text2","") & IF(AND(daydiff3 >=5, flag3 <> "yes"), " & text3","") & ... & IF(AND(daydiff8 >=5, flag8 <> "yes"), " & text8",""), 4, 1000)

答案2

您无需嵌套函数,只需将它们连接起来即可:

=TRIM( 
  IF(AND($W12-TODAY()>=-5,$Y12<>"Yes"),"Invite 1","") 
  & " " 
  & IF(AND($Z12-TODAY()>=-5,$AB12<>"Yes"),"Invite 2","") 
)

相关内容