VBA - 扭转功能

时间:2018-03-08 12:57:08

标签: excel-vba function reverse vba excel

是否可以在VBA中反转函数 - 我的意思是通过其值获取函数的参数/参数?当然,我们必须假设没有一对相同的值分配给不同的参数/参数集。 例如:

Function func(arg1 As ..., arg2 As ..., ..., argn As ...) As (valType)
 func(arg1,arg2,...,argn) = ...
End Function

Sub get_argument()

Const val = ...

Workbooks(...).Worksheets(...).Cells(...,...).Value = func^(-1)(val)

End Sub

2 个答案:

答案 0 :(得分:3)

功能是否“可逆”或不高度取决于具体功能。某些功能可能是可逆的,但其他功能则不可以。

因此,例如求和函数不可逆。如果总结以下5个参数,则会得到一个解决方案。

1 + 2 + 3 + 4 + 5 = 15

但是有很多种可能性来获得15和5个参数的总和。您需要求解代数系统15 = x₁ + x₂ + x₃ + x₄ + x₅,这在代数上是不可能的。

但你可以做的是使用数值算法(例如使用求解器)来获得该方程的一个解(许多可能性之一)。但是这样你最终会得到任何与原始可能性无关的可能性。因此,解算器可能最终得到3 + 3 + 3 + 3 + 3 = 15

所以结论是:
除非我们不知道原始功能,否则我们不能说它是否可逆。

答案 1 :(得分:1)

我担心一般来说,这是不可能的。

最接近你的目标的是通过编写反函数来反转特定函数的逻辑,当且仅当目标函数从其参数产生唯一结果时。