【发布时间】:2018-01-12 12:44:43
【问题描述】:
我有一个从 1 开始的数字范围,以 1 递增到上限,上限可能在 100 到 200 之间。
我正在尝试创建一个函数,将这些数字转换为 0.5 到 20 的范围,其中 one 始终 = 20,最大值始终等于 0.5,其余数字在两个。
假设从一到最大的数字在 A 列中,我已经设法将旧比例转换为新比例:
=(((A1-1)*(20 - 0.5))/(MAX(A:A) - 1))+0.5
可以表示为(((OldVal - OldMin) * (NewMax - NewMin)) / (OldMax - OldMin)) + NewMin
这可以正确转换尺度大小
200 20
199 19.90201005
198 19.8040201
197 19.70603015
196 19.6080402
195 19.51005025
194 19.4120603
etc...
8 1.185929648
7 1.087939698
6 0.989949749
5 0.891959799
4 0.793969849
3 0.695979899
2 0.59798995
1 0.5
我现在需要做的是反转比例,使最大值(100 到 200)= 0.5,最小值(1)= 20。
如何做到这一点,记住最大值是动态的并且可以在 100 到 200 之间的任意值?是否有另一种方法可以解决创建逆相关的原始问题?
理想情况下,如果有一些聪明的数学技巧(你可能猜到我不是数学男孩!)我希望能够在不先计算整个序列的情况下找出序列中的任何数字,例如 returnValue = someFunction(120) ,尽管这不是必需的。
非常感谢。
【问题讨论】:
-
如果可以的话,您可以使用 VBA 轻松完成这项工作吗?
-
是的,我想我可以将这些值放入几个数组中并反转其中一个,但理想情况下我正在寻找一个更数学的解决方案。我的直觉告诉我,一定有一些简单的方程式可以做到这一点。不过,感谢您将想法作为后备。
标签: excel math excel-formula