excel - 在VBA函数中计算二变量函数的值
问题描述
我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
等之类的任何功能?
解决方案
我将您的问题解释为如何使数学函数成为函数的输入参数test
。在 VBA 中没有很好的方法可以做到这一点,但是您可以做的是在代码模块中定义函数,然后使用Application.Run
从内部按名称调用函数test
。
概念证明:
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 函数(或编写自己的解析器)。
推荐阅读
- c# - .Net 库包的依赖项
- python - Seaborn get_xticklabels 返回空文本
- javascript - 我可以使用依赖模块drupal中的css/js吗?
- javascript - 如何从javascript中的字符串中删除每个第n个字符?
- node.js - mongoDB中的条件查询字段
- postgresql - 在 postgreSQL 中,我们可以在 pgadmin 中添加服务器(vm),所以我们可以在 CouchDB 中使用 Fauxton 来做同样的事情吗
- virtualhost - 在 Windows 上访问虚拟主机时出现问题
- javascript - 有没有办法编写适用于两个行值的 getValue(t) 函数?
- javascript - 强制在 .net core 中打开 doc 和 email 文件作为预览
- wordpress - Wordpress 自动将主页从 http 重定向到 https