如何将一系列数字转换为0到10的范围
我有一大串我想转换为0到10的数字。
我使用下面的公式将最大值转换为10,最小值转换为0,
=IF(A1="-","0",MIN(MAX((A1-MIN(A:A))/((MAX(A:A)-MIN(A:A))/11),0),10))
但是,我面临一些问题转换的最大值应为0和最小值应为10的系列。例如,如果列A有值,
1 4 6 7 8
那么8应该有一个值0,1应该有一个值10。
谢谢!
只需使用公式= 10-B1,其中B1是包含您提及的公式的单元格。
请注意,虽然你的公式有以下缺陷:
-
这是错误的。 如果你用三个数字1,2,3进行testing,你会得到5.5,对应于2的值。显然,正确答案应该是5.这个错误是由你用来分割数字11(MAX(A: A)-MIN(A:A))。 将其更改为10,一切都将工作!
-
它返回#DIV / 0! 如果A列中只有一个数字
-
它是低效率的,因为它在每个包含这个公式的单元格中调用耗时的函数MAX(A:A)和MIN(A:A)。 由于这两个函数不依赖于包含公式的单元格,因此可以考虑在其他单元格中只使用它们一次,然后修改公式,使其包含指向这些外部单元的链接,而不是函数本身。
-
这几乎不可维护和/或可读。 我花了一段时间才明白你的配方是如何工作的。 考虑将其分成有意义的部分,将这些部分放入不同的单元格中,最后简单地将这些部分连接在一起,形成一些最终的公式。
-
这是不必要的复杂。 实现同样的事情有一个更容易的公式,基于以下几点:
= 10 * B1 / C1,
其中B1包含“距最小距离”,即A1-MIN(A:A),C1包含数字范围的总长度,即MAX(A:A)-MIN(A:A)