Altere seu UDF para ficar assim:
Function SHEET_NAMES() As Variant
' returns names of all sheets as an array
Dim index As Long, retArray() As String, i As Long
index = 1
i = 1
Application.Volatile True
ReDim retArray(1 To ThisWorkbook.Sheets.Count - 1)
Do While index <= ThisWorkbook.Sheets.Count
If ThisWorkbook.Sheets(index).Name <> "SUMMARY" Then
retArray(i) = ThisWorkbook.Worksheets(index).Name
i = i + 1
End If
index = index + 1
Loop
SHEET_NAMES = retArray
End Function
A única mudança realmente significativa é que eu ignorei a planilha SUMMARY.
E, em seguida, use essa fórmula de matriz, adaptada de aqui (confirme com ctrl + shift + enter):
=SUM(IF(N(INDIRECT(SHEET_NAMES()&"!B"&ROW()-5))>=B6,IF(N(INDIRECT(SHEET_NAMES()&"!B"&ROW()-5))<=C6,1,0),0))
Observe que, para que isso funcione, seus dados na planilha SUMMARY devem começar na linha 6 (como sua amostra). Se isso não acontecer, você terá que ajustar o ROW()-5
bit para que seja igual a 1 na primeira linha. Ele tem que funcionar dessa forma porque é isso que incrementa a linha quando você faz o autofile da fórmula.
Editar: endereçando seus comentários, use esta fórmula. Pode ser usado com a sua UDF original e utiliza ADDRESS()
para criar as referências.
=SUM(IFERROR(IF(N(INDIRECT(ADDRESS(ROW(B1),COLUMN(B1),,,SHEET_NAMES())))>=B6,IF(N(INDIRECT(ADDRESS(ROW(B1),COLUMN(B1),,,SHEET_NAMES())))<=C6,1,0),0),0))