如何限制一个值在Excel中的范围?

在C ++中,我会使用boost::clamp 。 基本上我有一些Excelfunction

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 

如果你在一个标准的代码模块中input,那么你可以做这样的事情:

在这里输入图像说明

在列AI中的值在0到2 * pi的范围内。 在C2中,我的值是0.5。 在B1我input

 =clamp(SIN(A1),-$C$2,$C$2) 

并抄下来。 该图显示了结果。

(因为我给了一个VBA解决scheme,所以我将添加Excel-VBA标签,即使你更喜欢非VBA解决scheme,未来其他人也可能会search这个问题,并对VBA解决scheme感到满意。

这可以使用MEDIAN完成。 MEDIAN挑选三个值的中间值,从而有效地限制下限和上限。

比如说你的最小值是5,最大值是10:

=MEDIAN(5,0,10)是5

=MEDIAN(5,7,10)是7

=MEDIAN(5,12,10)是10