将值列表转换为 -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,0
和 0,1
如果输入数字的范围是有限的,即使是负数,您也可以使用下面的通用范围映射公式。
如果输入数字的范围是[X1:X2]并且输出数字的范围是[Y1:Y2](在你的例子中是[-1:+1])那么数字x映射到数字y使用以下公式的输出范围:
y = (x - X1) * (Y2 - Y1) / (X2 - X1) + Y1
当 X2-X1 != 0
我有一份调查问卷,其中包含多种不同格式的答案。我希望范围在 -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,0
和 0,1
如果输入数字的范围是有限的,即使是负数,您也可以使用下面的通用范围映射公式。
如果输入数字的范围是[X1:X2]并且输出数字的范围是[Y1:Y2](在你的例子中是[-1:+1])那么数字x映射到数字y使用以下公式的输出范围:
y = (x - X1) * (Y2 - Y1) / (X2 - X1) + Y1
当 X2-X1 != 0