是否可以在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
答案 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)
我担心一般来说,这是不可能的。
最接近你的目标的是通过编写反函数来反转特定函数的逻辑,当且仅当目标函数从其参数产生唯一结果时。