Вам нужны именованные диапазоны с одинаковыми именами с областью листа, а не областью книги.
Я изменил ваше определение именованного диапазона следующим образом.
=Sheet1!$H$1:INDEX(Sheet1!$H:$H, MATCH(1E+99, Sheet1!$H:$H))
Этот VBA создаст область листаименованные диапазоны для всех рабочих листов в цикле.
Sub createNames()
Dim wsn As Long, f As String
For wsn = 2010 To 2019
On Error GoTo next_wsn
With Worksheets(CStr(wsn))
On Error Resume Next
.Names("Hnumbers").Delete
On Error GoTo 0
f = Replace("=Sheet!R1C8:INDEX(Sheet!C8, MATCH(1E+99, Sheet!C8))", "Sheet", Format(wsn, "'0'"))
.Names.Add Name:="Hnumbers", RefersToR1C1:=f
End With
next_wsn:
Next wsn
End Sub