Q:

Excel Lazy Evaluation for AND() and OR()

Excel appears to not use lazy evaluation for AND() and OR() functions. For example:
=AND(A1<>0, B1/A1>.5)

will result in a value of #DIV/0!. One alternative would be to use an if statement:
=IF(A1<>0, B1/A1>.5, FALSE)

however this becomes messy if the AND function was planned to be used inside an IF function (or possible some nested IFs). Is there a better (i.e. more readable) solution?

A:

Don't think you can do much better than what you've got. Here's a few other alternatives: 
=IF(A1,B1/A1>.5) 
=IFERROR(B1/A1>.5,FALSE)
=COUNT(N(A1<>0),N(B1/A1>.5))=2

Although it's longer, the last one can be extended to more conditions and is easily modified to OR by changing =2 to >0.

