VBA - 反转函数

VBA - reversing a function

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

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

恐怕在一般情况下,这是不可能的。

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

一个函数是否"reversable"很大程度上取决于具体的函数。有些功能可能是可逆的,有些则不是。

因此,例如求和函数是不可逆的。如果您总结以下 5 个参数,您将在 return.

中得到一个解决方案
1 + 2 + 3 + 4 + 5 = 15

但是有很多可能性可以用 5 个参数得到 15 的总和。您需要求解方程组 15 = x₁ + x₂ + x₃ + x₄ + x₅,这在代数上是不可能的。

但是您可以使用数值算法(例如使用求解器)来获得该方程的一个解(众多可能性之一)。但是这样一来,您最终会得到与原始可能性不同的任何可能性。所以 Solver 可能以 3 + 3 + 3 + 3 + 3 = 15.

结束

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