Rick,
This isn't really the solution you're looking for, but I thought I'd post it because it addresses problem 2 in your list.
I've had to deal with the same issue as you, but I've also had to deal with reports where missing data causes a number of other errors. The best answer I've ever had was the IF(ISERROR()) syntax. I wrote this macro years ago to quickly convert any formula to that syntax. When I need to edit the formula I can quickly reconvert it to the IF(ISERROR()) syntax. It's probably one of my most used macros.
And looking at it, I realize just how long ago I wrote it. I'd do it a bit differently today. But it's worked for me for years.
Sub Error_Blanking()
'****************************************************************'
Transforms each formula in the selected range so that error
'values are not displayed
'****************************************************************
Dim strOld As String, strNew As String, intCount1 As Integer
Dim c As Range
'Turn ScreenUpdating and Calculation off to speed processing
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Loop through all selected cells
For Each c In Selection
If c.HasFormula Then 'make sure the cell has a formula
strOld = c.Formula
intCount1 = Len(strOld)
'Strip the equals sign from the formula
strNew = Right(strOld, intCount1 - 1)
c.Formula = "=IF(ISERROR(" + strNew + ")," + Chr(34) _
+ Chr(34) + "," + strNew + ")"
Else: End If
Next c
'Turn ScreenUpdating and Calculation back on
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
I too am curious regarding the use of OFFSET. As Roger says, that's going to really hurt performance. If there's any way around it, I'd suggest you consider it.
David B.