将值列表转换为 -1 和 1 之间

Converting a list of values to between -1 and 1

我有一份调查问卷,其中包含多种不同格式的答案。我希望范围在 -1 和 1 之间。但是,并非所有范围都包含负数。

我需要创建一个 excel 公式来根据范围将值转换为以下值。

+---+--------+
| A |To this | 
+---+--------+
|-3 |  -1    |
|-2 | -0.66  |
|-1 | -0.33  |
| 0 |   0    |
| 1 |   1    |
+---+--------+

+---+--------+
| A |To this | 
+---+--------+
| 0 |   0    |
| 1 |  0.25  |
| 2 |  0.5   |
| 3 |  0.75  |
| 4 |   1    |
+---+--------+

+---+--------+
| A |To this | 
+---+--------+
| 1 |  0.2   |
| 2 |  0.4   |
| 3 |  0.6   |
| 4 |  0.8   |
| 5 |   1    |
+---+--------+

+---+--------+
| A |To this | 
+---+--------+
|-2 |  -1    |
|-1 |  -0.5  |
| 0 |   0    |
| 1 |  0.5   |
| 2 |   1    |
+---+--------+

等等

这个公式应该可以解决问题:

=IFERROR(IF(A1<=0,-1*A1/(MIN(A:A)+MIN(0,MAX(A:A))),A1/(MAX(A:A))),0)

这会在自动填充时生成此示例输出:

-3  -1
-2  -0.666666667
-1  -0.333333333
 0   0
 1   0.2
 2   0.4
 3   0.6
 4   0.8
 5   1

注意:这包括 0 两组 -1,00,1

如果输入数字的范围是有限的,即使是负数,您也可以使用下面的通用范围映射公式。

如果输入数字的范围是[X1:X2]并且输出数字的范围是[Y1:Y2](在你的例子中是[-1:+1])那么数字x映射到数字y使用以下公式的输出范围:

y = (x - X1) * (Y2 - Y1) / (X2 - X1) + Y1

X2-X1 != 0