2

Я ищу что-то похожее на решение, размещенное здесь:

Функция Excel, которая оценивает строку, как если бы она была формулой?

Проблема в том, что это, похоже, не работает с функцией там.

Эта функция в этой теме представлена Крисом Нилсеном:

Function ev(r As Range) As Variant
    ev = Evaluate(r.Value)
End Function

Вот пример строки, которую я хотел бы превратить в формулу:

=(INDEX(DataV,1,4)/INDEX(DataV,2,4))*100

DataV - это имя в электронной таблице.

Я не уверен, как это сделать, может быть, я пойму это, сейчас это выглядит так, как будто я, вероятно, не буду, если я не буду больше читать о VBA.

Любая помощь приветствуется.

1 ответ1

1

Просто подумал, что поделюсь решением, с которым я в конце концов согласился, так как оно делает свою работу. Не удалось создать пользовательскую функцию, которая делает это, кажется невозможным, поэтому я пошел с базовым макросом.

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

Работает с любой строкой, хотя функции должны быть написаны на английском языке. Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .