Вы можете интегрировать переменные в формулу, это становится немного сложнее, и я думаю, что есть лучшие способы сделать это, но это метод, который я использую, когда мне нужны динамические диапазоны в формулах в VBA.Ниже приведен пример, который должен помочь:
Я предполагаю, что J3 и H3 останутся прежними, но конец диапазона - это то, что вы ожидаете изменить.Если это не так, дайте мне знать.
По сути, вы заменяете «31» в ссылке на диапазон на «& [variable] &» (включая кавычки).
EDIT: Я использую Sheet1 в качестве примера для подсчета строк;так что просто обновите это до того, какой бы применимый лист & диапазон был бы.
Dim rCount As Long
rCount = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
Selection.Offset(0, 1) = "=INDEX($J$3:$J$" & rCount & ",MATCH(INDIRECT(""RC[-2]"",0),$H$3:$H$" & rCount & ",0))"