excel - 在VBA函数中计算二变量函数的值

标签 excel vba function variables

我有一个函数f(x,y) = e^(x+y)并在 VBA 中像这样运行:

Function Test(n As Integer, x0 As Double, xk As Double, y0 As Double, yk As Double) As Double()

Dim i As Integer
Dim j As Integer
Dim Tablica() As Double
ReDim Tablica(0 To n, 0 To n)
For i = 0 To n
    For j = 0 To n
        Tablica(j, i) = Exp(x0 + i * (xk - x0) / n + y0 + j * (yk - y0) / n)
    Next j
Next i
Test = Tablica

End Function
有没有办法重写此代码以使用任何函数,如 f(x,y) = x+y ETC。?

最佳答案

我将您的问题解释为如何使数学函数成为函数 test 的输入参数.在VBA中没有很好的方法可以做到这一点,但是你可以做的是在代码模块中定义函数然后使用Application.Runtest 内部按名称调用函数.
概念证明:

Function test(f As String, n As Integer, x0 As Double, xk As Double, y0 As Double, yk As Double) As Double()
    Dim i As Long, j As Long
    Dim Tablica() As Double
    ReDim Tablica(0 To n, 0 To n)
    
    For i = 0 To n
        For j = 0 To n
            Tablica(j, i) = Application.Run(f, x0 + i * (xk - x0) / n, y0 + j * (yk - y0) / n)
        Next j
    Next i
    test = Tablica
End Function

'used like:

Function g(x As Double, y As Double) As Double
    g = x - y
End Function

Sub test2()
    Range("A1:D4").Value = test("g", 3, 0, 1, 3, 4)
End Sub
请注意,您不需要命名被调用函数 f ,所以 test可以使用多种功能。不幸的是,VBA 缺少匿名函数的概念,因此您仍然需要将函数定义为 VBA 函数(或编写自己的解析器)。

关于excel - 在VBA函数中计算二变量函数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65234389/

相关文章:

VBA : Number the slide if they are visible

c++ - 如何错误处理命令行参数?

sql - 如何删除 MS SQL 数据库中最旧的一周(期间)?

ado.net - 如何在 Excel 中使用 ADO.NET 托管提供程序?

c++ - 我可以从以前的参数中设置默认参数吗?

c++ - 使用 C++ void 函数操作 vector 数组

c - 缺少开发 xll 插件的 MSDN 文档?

Excel-VBA : Variable Names, 匈牙利符号和变量命名最佳实践

php - 使用牛顿法重新创建 Excel RATE 函数

c# - 解析excel文件的好资源?