2017-02-22 20 views
0

Я пытаюсь запрограммировать рекурсивную функцию в VBA, так что, как только созданная мной функция начнет увеличиваться, результат будет ограничен в самой нижней точке.Рекурсивная функция 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 

Вот что цифры выглядят, с требуемой колонки, что я хочу в конце концов.

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 

Я понимаю, что мне нужно использовать рекурсивную функцию, но я не могу ее разобрать. Есть предположения? Благодарю.

+0

Эй @ dc2, если это в excel, вы можете использовать = min (cell1, cell2, cellAbove) ... это работает? – TheSilkCode

+0

Нет, мне нужно его закодировать в VBA, так как значения меняются. – DC2

+0

Так что, я думаю, я не понимаю, что вы делаете, это ваши данные в excel? И то, и другое? Итак, вы пишете UDF или суб? Просто неясно, что вы пытаетесь сделать ... – TheSilkCode

ответ

0

Просто создайте переменную, которая может содержать минимальное значение? Скажем, minVar.

Если результат больше минимального, используйте minVar. Если результат меньше минимума, используйте значение и перезапишите minVar.

Dim minVar as double 
minVar = 999999  
If function_temp < function1(var1, var2, var3, var4) 
     Then if function_temp < minVar 
       Then minVar = function_temp 
       end if 
     temp function2= function_temp 
end if 
+0

Правильно, я бы сделал это, кроме минимальных изменений, и нет возможности рассчитать минимум. Формула имеет 4 входа, поэтому минимальные изменения зависят от входов. – DC2

Смежные вопросы