Hi.
I take it you're using Excel 2003 or earlier then, and so can't take advantage of Excel's more concise IFERROR, i.e.:
=IFERROR(INDEX(Comparables_data!$A$2:$AV$252,MATCH($D$1&A11,Comparables_data!$AG$2:$AG$252&Comparables_data!$C$2:$C$2525,0),13),"--")
If so, then you'll need the longer ISNA approach that you mention:
=IF(ISNA(INDEX(Comparables_data!$A$2:$AV$252,MATCH($D$1&A11,Comparables_data!$AG$2:$AG$252&Comparables_data!$C$2:$C$2525,0),13)),"--",INDEX(Comparables_data!$A$2:$AV$252,MATCH($D$1&A11,Comparables_data!$AG$2:$AG$252&Comparables_data!$C$2:$C$2525,0),13))
However, I should also point out that the only reason that this formula needs to be entered as an array formula is because you are performing the concatenation of the two columns in Comparables_data within the formula itself.
If would be much better, unless your set-up does not at all allow you to do so, to use an extra column in the Comparables_data tab in which to perform these concatenations.
Not only will that remove the not inconsiderable resource required by Excel to perform the concatenations within the formulas themselves (I presume this formula is being copied to further cells and is not just a one-off) but, more importantly, it will mean that this formula no longer needs to be committed as an array formula.
And if you are on Excel 2003, then since this ISNA set-up effectively requires that large, resource-heavy array formula - in cases where there is no error - to be calculated not just once, but twice, then the need to avoid unnecessary calculation becomes even more important.
Don't get me wrong - if you're new to array formulas then you're to be commended on producing such a formula, which is syntactically perfect. It's just that there are times for array formulas, and times for non-array formulas. And this may be a case for the latter.
Regards