Quote Originally Posted by snb View Post
@Rick
Although the OP did't ask for any flexibility, I think it's the most flexible one:

Code:
Sub M_snb()
  Range("C9:F10").Name = "snb1"
  Range("I9:L10").Name = "snb2"
  
  [snb1] = [if(snb1*snb2>0,int((snb1+snb2)/2),if(snb1&snb2="","",snb1+snb2))]
End Sub
Excellent! I don't know why, but I keep forgetting about using Defined Names for simplification... and yes, that does make it more flexible. One suggestion though... delete the Defined Names you create after they are no longer needed in the code so they do not get "locked in" when the user saves his/her workbook.

Quote Originally Posted by snb View Post
If you 'abhorr' square brackets, use
Code:
Range("snb1") = Evaluate("if(snb1*snb2>0,int((snb1+snb2)/2),if(snb1&snb2="""","""",snb1+snb2))")
Yes, I know I can do that... as a matter of fact, that is what I did (except for the Defined Names part, of course). Actually, with using Defined Names, I might reconsider by objection to the square bracket (at least as it applies to substituting for the Evaluate function call).