The only difference I can see between these two is that
ISERR will not handle #N/A. Also, what about ISNA? Is
there any advantage in using ISERROR over the others?
None of the books I have, or XL Help for that matter,
really differentiates these functions but for the #N/A
error. Anyone have some insight on this?
The only difference is that #N/A isn't as much an error value as the other error
values are. At least that's what should be the case. However, since Lotus
fubarred @FIND in 123R2 (1986), returning ERR when the substring wasn't found in
the string searched, the distinction between NA and ERR (in 123), so #N/A and
the other error values (in Excel), has been obscured if not lost entirely. Also,
if Lotus had implemented NA correctly, it wouldn't propagate through most
formulas - it'd be treated more like missing values in stats packages. But Lotus
*did* treat NA like an error, and Microsoft copied 123 functionality in Excel
back in the days when Lotus controlled the lion's share of the application
software market. The rest, as they say, is history.
More 123 background. 123 contains @ISNA and @ISERR. @ISNA(@NA) returns 1 (True),
but @ISNA(@ERR) returns 0 (False). On the other hand, @ISERR(@NA) returns 0, but
@ISERR(@ERR) returns 1. So Excel's ISNA and ISERR functions are modelled on
123's corresponding functions, and date from the period when Microsoft believed
they had to copy as much 123 functionality as possible. ISERROR was an Excel
extension, and has become more practical than the other two functions. Well,
more practical than ISERR. There may still be sound arguments for using ISNA to
catch lookup values not found in MATCH or ?LOOKUP calls, which would allow, say,
#REF! and #NAME? results to propagate, which is more often than not a very good
thing.
To be as minimalist as possible, Excel doesn't need anything other than ISERROR
and ERROR.TYPE. ISERR and ISNA are superfluous. But they need to continue to
exist in Excel in order to support workbook that still depend on them.