Автозаполнение через диапазон с использованием адресов из нескольких листов?

Я пытаюсь заменить цикл foreach автозаполнением, чтобы, надеюсь, ускорить процесс. Как вы заменяете конкретные имена workheeet (в этом случае «Sheet1» и «Sheet2» в строке FormulaR1C1 есть что-то вроде листов (1) и листов (2)? Имена листов необязательно всегда будут «Sheet1» и «Sheet2», поэтому я бы скорее ссылался на листы, не имея необходимости использовать конкретные имена.

ActiveCell.FormulaR1C1 = "=('Sheet1'!RC-'Sheet2'!RC)/'Sheet2'!RC" Selection.AutoFill Destination:=Range("D2:Z2"), Type:=xlFillDefault 

Вот цикл foreach, который у меня есть, надеюсь, это поможет выяснить, что я пытаюсь сделать:

 Set rng1 = Range(Cells(2, 4), Cells(rowcount1, colcount1)) For Each cell In rng1 address = cell.address val1 = Sheets(1).Range(address).Value val2 = Sheets(2).Range(address).Value If val1 = 0 Then cell.Value = 0 ElseIf val1 = 0 And val2 = 0 Then cell.Value = 0 Else cell.Value = (val2 - val1) / val1 End If Next cell 

rowcount1 и colcount1 – это rows.count и columnss.count для листов (3).

Любые конструктивные комментарии, которые помогут мне улучшить мой код (не обязательно отвечать на мой вопрос), также приветствуются. Спасибо за прочтение.

Давайте будем гением компьютера.