如何在excel中嵌套IF、AND或
excel公式中缺少清晰的格式,这让我很难做到 我需要写一个公式,它将:如何在excel中嵌套IF、AND或,excel,vba,logical-operators,formulas,nested-if,Excel,Vba,Logical Operators,Formulas,Nested If,excel公式中缺少清晰的格式,这让我很难做到 我需要写一个公式,它将: 检查J2是否为“否” 如果不是,则将值设置为“不适用” 如果是,请对照给定日期检查E2中的日期 如果在给定日期之后,将值设置为“通过” 如果在给定日期之前,检查G2是否为“取消”,K2是否为“否”,或者G2是否为“无效”,K2是否为“是” 如果为true,则将值设置为“失败” 如果为false,则将值设置为“通过” 如果我使用Javascript,它可能看起来像这样: function formulasMakeMyHe
- 检查J2是否为“否”
- 如果不是,则将值设置为“不适用”
- 如果是,请对照给定日期检查E2中的日期
- 如果在给定日期之后,将值设置为“通过”
- 如果在给定日期之前,检查G2是否为“取消”,K2是否为“否”,或者G2是否为“无效”,K2是否为“是”
- 如果为true,则将值设置为“失败”
- 如果为false,则将值设置为“通过”
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"
}
这是我尝试过的,至少有一个语法错误,更不用说一些可能的逻辑问题了。我在写公式的时候尝试过用不同的方式格式化公式,但是我总是在括号里迷路,弄不清楚什么会用到哪里
=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")
或者,如果您愿意,可以使用此自定义项:
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
然后在这样的任何单元格中调用它:
=公式makemyheadhart(J2,E2,G2,K2,DATE(2014,4,10))
SEARCH(J20,“No”)
-检查J20
是否包含“No”
。您想检查它是否为euqal“否”
?在我的情况下,contains对我来说很好,公式中的最后一个“Fail”“Pass”是向后的(可能是由于我的解释),语法完全正确,谢谢!我喜欢更容易理解的UDF!对于这样的公式,我也更喜欢UDF,因为它更容易维护+1。此外,您可以返回实际错误“#N/A”值(如果需要)res=cverr(2042)
,而不是res=“N/A”
。