Excel VBA - 用户定义函数将字符串转换为公式

Excel VBA - 用户定义函数将字符串转换为公式

我正在寻找与此处发布的解决方案类似的内容:

Excel 函数是否可以像公式一样对字符串进行求值?

问题是,这似乎无法与其中的功能一起工作。

这是克里斯尼尔森 (chris neilsen) 在该线程中提交的函数:

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

我只是想分享一下我最终采用的解决方案,因为它确实有效。无法创建执行此操作的用户定义函数,这似乎不可能,所以我使用了基本的宏。

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.Offset 来定义相当于 Range2 的函数

适用于任何字符串,但函数确实需要用英语编写。希望这能有所帮助。

相关内容