如何在Excel中嵌套IF,AND,OR

excel公式中没有清晰的格式,这对我来说很难。

我需要写一个公式:

  • 检查J2是否为“否”
  • 如果不是,则将值设置为“N / A”
  • 如果是这样,在一个给定的date检查E2的date
  • 如果在给定的date之后,将值设置为“通过”
  • 如果在给定的date之前,检查G2是“取消”,K2是“否”,或G2是“无效”,K2是“是”
  • 如果真设定值为“失败”
  • 如果虚设值为“通过”

如果我使用Javascript,它可能看起来像这样:

function formulasMakeMyHeadHurt(J2,E2,G2,K2,givenDate){ if(J2=="No"){ if(E2>givenDate){ if((G2=="Cancel"&&K2!="No")||(G2=="Void"!="Yes")){ return "Fail" } else return "Pass" } else return "Pass" } else return "N/A" } 

这是我所尝试的,至less有一个语法错误,不提一些可能的逻辑问题。 我试着用不同的方式格式化公式,但是我一直迷失在括号里,不知道哪里去了哪里。

 =IF( ISNUMBER(SEARCH(J20,"No")) , IF($E20>=DATE(2014,4,10)) ,"Pass" , IF( OR( ISNUMBER(FIND("Void",G20)) , AND(ISNUMBER(FIND("Cancel",G20)), ISERROR(SEARCH("No",K20))) ) ) ,"Pass" ,"Fail") ) ,"N/A") 

相同的公式没有间隔如果更容易在你的眼睛:

 =IF( ISNUMBER(SEARCH(J20,"No")),IF($E20>=DATE(2014,4,10)),"Pass", IF(OR(ISNUMBER(FIND("Void",G20)),AND(ISNUMBER(FIND("Cancel",G20)),ISERROR(SEARCH("No",K20))))),"Pass","Fail")),"N/A") 
  • 这个公式应该如何写?
  • 使用VBA脚本会更好吗?

根据你的描述,这是公式:

 =IF(ISNUMBER(SEARCH("No",J2)),IF(E2>=DATE(2014,4,10),"Pass",IF(OR(AND(ISNUMBER(SEARCH("Cancel",G2)),ISNUMBER(SEARCH("No",K2))),AND(ISNUMBER(SEARCH("Void",G2)),ISNUMBER(SEARCH("Yes",K2)))),"Fail","Pass")),"N/A") 

或者如果你愿意,你可以使用这个UDF:

 Function formulasMakeMyHeadHurt(J2 As String, E2 As String, _ G2 As String, K2 As String, _ givenDate As Date) As String Dim res As String If J2 Like "*No*" Then If CDate(E2) >= givenDate Then If (G2 Like "*Cancel*" And K2 Like "*No*") Or _ (G2 Like "*Void*" And K2 Like "*Yes*") Then res = "Fail" Else res = "Pass" End If Else res = "Pass" End If Else res = "N/A" End If formulasMakeMyHeadHurt = res End Function 

然后在任何单元格中调用它: =formulasMakeMyHeadHurt(J2,E2,G2,K2,DATE(2014,4,10))