在C ++中,我将为此使用boost::clamp
。基本上我有一些excel功能A1*B2+C3+D4
我想将其限制为+/-一些数字,称为X1
。明显的方法是这样的:MAX(-X1, MIN(X1, A1*B2+C3+D4))
但我希望能够做到这一点:CLAMP(A1*B2+C3+D4, -X1, X1)
是否存在或类似的东西?我只是好奇-显然,解决方法有效,但是很丑。
最佳答案
使用电子表格公式,我认为您不能做得比最小/最大构造更好。您可以在VBA中编写clamp
:
Function clamp(x As Double, lower As Double, upper As Double) As Double
If x < lower Then
clamp = lower
ElseIf x > upper Then
clamp = upper
Else
clamp = x
End If
End Function
如果您在标准代码模块中输入密码,则可以做这样的事情:
在A列中,我的值在0到2 * pi的范围内。在C2中,我的值为0.5。在B1中,我输入
=clamp(SIN(A1),-$C$2,$C$2)
然后抄下来该图显示结果。
(由于我提供了VBA解决方案,因此我将添加Excel-VBA标签。即使您更喜欢非VBA解决方案,将来也有可能其他人会搜索该问题并对VBA解决方案感到满意)。