|Well, for starters, I'll offer this: Aren't these 2 terms exactly the same:|
IF(B4 = VLOOKUP(A4,$D$4:$E$18,2,FALSE)
IF(B4 - VLOOKUP(A4,$D$4:$E$18,2,FALSE) = 0
In other words, if B4 minus the VLOOKUP result equals 0 then B4 must equal the VLOOKUP result. You seem to be checking for this condition twice.
Next, you should look up the OR function in Excel Help. If you have more than one condition for which you want the same result, you can use IF(OR(this, that, the other thing), B4,...
Finally, while it won't actually shorten your formula, the proper (traditional?) syntax is to put the function first and the result you are checking for second.
IF("" = VLOOKUP(A4,$D$4:$E$18,2,FALSE), should be written as:
IF(VLOOKUP(A4,$D$4:$E$18,2,FALSE) = "",
No, it doesn't really change anything, other than the fact that most (all?) people do it that way, so it makes the formula much easier for everyone to read.
Think of it this way:
The nothing will always equal nothing, but the VLOOKUP result could equal many things. Therefore we ask if the VLOOKUP result equals a specific value, not if a specific value equals the result of the VLOOKUP.
It just feels better when written that way.
Posting Tip: Before posting Data or VBA Code, read this How-To.