在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

如果您在标准代码模块中输入密码,则可以做这样的事情:
excel - 如何将值限制为Excel中的范围?-LMLPHP
在A列中,我的值在0到2 * pi的范围内。在C2中,我的值为0.5。在B1中,我输入
=clamp(SIN(A1),-$C$2,$C$2)

然后抄下来该图显示结果。
(由于我提供了VBA解决方案,因此我将添加Excel-VBA标签。即使您更喜欢非VBA解决方案,将来也有可能其他人会搜索该问题并对VBA解决方案感到满意)。

07-27 23:44