Просто подумал, что поделюсь решением, с которым я в конце концов согласился, так как оно делает свою работу.
Не удалось создать пользовательскую функцию, которая делает это, кажется невозможным, поэтому я пошел с базовым макросом.
Sub Formulas()
Dim rng As Range, cell As Range, y As Integer, o As Integer
y = Range("B1").Value
o = (y - 3) * 2
Set rng = Range(Cells(3, 4), Cells(3, y))
On Error GoTo ErrHandler
For Each cell In rng
cell.Activate
cell.Formula = ActiveCell.Offset(0, o).Value
Next cell
Exit Sub
ErrHandler:
Msg = "Invalid formula for this Indicator, please re-check in sheet IndDef"
MsgBox Msg, , "Error!", Err.HelpFile, Err.HelpContext
End Sub
Этот был написан для использования с кнопкой, если вы хотите, чтобы макрос запускался автоматически, посмотрите на этом сайте советы по использованию пересечения.
Важной частью проблемы является вопрос:
cell.Activate
cell.Formula = ActiveCell.Offset(0, o).Value
Просто определите формулу ячейки как значение ячейки со строкой
Range1.Formula = Range2.Value
В моем случае я хотел, чтобы он проходил через несколько ячеек, поэтому мне нужно было активировать эквивалент Range1 и использовать ActiveCell.Смещение для определения эквивалента Range2
Работает с любой строкой, хотя функции должны быть написаны на английском языке.
Надеюсь это поможет.