![计算值范围的偏差?](https://linux22.com/image/1446139/%E8%AE%A1%E7%AE%97%E5%80%BC%E8%8C%83%E5%9B%B4%E7%9A%84%E5%81%8F%E5%B7%AE%EF%BC%9F.png)
我试图找到是否有一个函数可以执行我可以用几个 IF 语句做的事情,只是为了让它更健壮和标准(并且更具可读性)
我有一个包含 4 列数据的电子表格
A B C D
1200 1350 1700 []
100 120 50 []
A = 最小值,B = 最大值,C = 实际值
我想获取 D 列中的差值。例如,如果 C 小于 A,则应为 A - C。如果 C 大于 B,则应为 C - B。如果 C 介于 A 和 B 之间,我想显示与 A 和 B 中点的偏差。
我可以使用一些 IF 语句来做到这一点,但我不确定是否有更好的方法来做到这一点。
编辑:我自己做的 IF 语句方法如下
=IF([@Actual] < [@[Min]],([@Actual]-[@[Min]]),(IF([@Actual] > [@[Max]],([@Actual]-[@[Max]]),([@Actual]-(([@[Min]]+[@[Max]])/2)))))
经过一个小时的尝试,它似乎给了我想要的结果。但在 400 行、48 页的电子表格上,它造成了相当大的延迟。
我想真正的问题是,是否有内置函数可以产生相同的结果,但使用更少的代码/更快的代码?
答案1
您需要两个if
和一个average
函数,没有用于此计算的内置函数。如果可读性对您来说真的很重要,那么请考虑使用一些 VBA 并创建 UDF。
答案2
考虑:
=IF(C1<A1,A1-C1,IF(C1>B1,C1-B1,ABS(C1-(B1-A1)/2)))