根据它们属于的间隔来调出一定范围的数字

时间:2018-11-21 15:59:11

标签: excel vba

我有以下转换表:

enter image description here

我需要将第二列的值转换为第一列中的值,作为连续变量。

当前,我正在尝试编写一个从第二列接受值的函数,检查其有效性,然后使用以下转换公式进行数据转换:

enter image description here

当前代码如下:

Public Function ReScale (input As Double)

  'Max and Min values of the old scale.
   Dim MinOld As Double: MinOld = 2
   Dim MaxOld As Double: MaxOld = 6

  'Test input value validity.
   If input > MaxOld Or input < MinOld Then
     ReScale = CVErr(xlErrNA)
   End

   Dim MinNew As Double
   Dim MaxNew As Double

   'Find in which interval the input value belongs.
   If input >= 5.5 Then
     MinOld = 5.5
     MaxOld = 6.0
     MinNew = 85
     MaxNew = 100
   ElseIf input >= 4.50 And input <= 5.49 Then
     MinOld = 4.50
     MaxOld = 5.49
     MinNew = 65
     MaxNew = 84
   ...` <--------------------- Question?

  'Transform the old data to the new scale.
   ReScale = ( (MaxNew - MinNew) / (MaxOld - MinOld) ) * (input - MaxOld) + MaxNew

End Function

我的问题是:

我应该根据变量值搜索MaxNewMinNewMaxOldMinOld,还是应该使用绝对最小值和最大值?

有没有更简单的方法?


1 个答案:

答案 0 :(得分:1)

这是一个框架挑战:

目前,此分级系统使边界处的分级结构发生了真正的急剧变化。例如,看一下以下转换:
from 3.2 input to 3.3 input is an output change of 1.84, from 3.3 input to 3.4 input is an output change of 1.84, from 3.4 input to 3.5 input is an output change of 2.65, from 3.5 input to 3.6 input is an output change of 1.92, from 3.6 input to 3.7 input is an output change of 1.92

分级曲线通常被称为具有一定的原因-提供平滑的分布和过渡。如果要在图表上放置三次趋势线,可以使用y = 0.0015x^3 - 0.1115x^2 + 4.545x - 5.5277 几乎(但不完全)到达那里:
Graph showing trendline and converted values
(我已经圈出了尖锐的过渡,并且事实是当前给出的方程在x=2处变为负数)