вам нужно l oop по строкам, чтобы изменить гиперссылку в каждой строке, иначе вы просто меняете строку 1. Если вы хотите сохранить ссылку Excel на листе, вы можете просто заменить номер строки в l oop (или, в данном случае, l oop), который иногда бывает неплохо иметь, но он создает неуклюжий код в процессе конкатенации.
Sub InsertHyperlinkFormulaInCell()
'starting with row 2 since row 1 is title row
currentRow = 2
' cells allows to call columns by number instead of letters (so A becomes 1, B:2 etc.)
While Cells(currentRow, 2) <> "" 'check whether Column B is empty, stop if it is
'This is your active line, just replaced the row number 1 with the variable currentRow
'which loops through the sheet until it encounters and empty cell in column B
ActiveWorkbook.Worksheets("Sheet1").Cells(currentRow, 1) = "=HYPERLINK(CONCAT(B" & currentRow & ",C" & currentRow & "),D" & currentRow & ")"
currentRow = currentRow + 1
Wend
End Sub
Надеюсь, что это поможет