【发布时间】:2017-02-22 21:39:00
【问题描述】:
我正在尝试在 VBA 中编写一个递归函数,这样一旦我创建的函数开始增加,结果就会被限制在最低点。
目前我写的代码是:
Public Function function2(var1, var2, var3, var4)
temp = Application.WorksheetFunction.Max(var3- 1, 2)
function_temp = function1(var1,var2, temp, var4)
If function_temp < function1(var1, var2, var3, var4) Then function2= function_temp
If function_temp >= function1(var1, var2, var3, var4) Then function2= function1(var1, var2, var3, var4)
End Function
这是数字的样子,而 Desired 列是我最终想要的。
Duration Result Current Desired
2 2.845 2.845 2.845
3 2.563 2.563 2.563
4 2.371 2.371 2.371
5 2.252 2.252 2.252
6 2.189 2.189 2.189
7 2.170 2.170 2.170
8 2.182 2.170 2.170
9 2.213 2.182 2.170
10 2.246 2.213 2.170
11 2.259 2.246 2.170
12 2.241 2.241 2.170
我意识到我需要使用递归函数,但我无法解决它。有什么想法吗?谢谢。
【问题讨论】:
-
嘿 @dc2 ,如果这是在 excel 中,您可以使用 =min(cell1,cell2,cellAbove)... 可以吗?
-
不,我需要用 VBA 编码,因为值会发生变化。
-
所以我想我不明白你在做什么 - 你的数据在 excel 中吗?当前的和期望的?所以你在写一个UDF还是一个子?只是不清楚您要做什么...
-
嗨,我用 VBA 编写的另一个函数正在输出数据。结果是该函数 (function1) 的输出。当前列是我的代码试图解决问题的当前输出。但是,我需要输出看起来像所需的列。
-
我不确定我是否理解“结果限制在最低点”的意思。最低点是什么?此外,这是否被用作作为 UDF - 即您是否有在单元格公式中使用
function2的单元格?