Google Sheets如何将数值序列线性转换到自定义新最值区间
Google Sheets 线性映射转换公式
核心逻辑
实现固定比例反向线性映射:原数值区间[31.452, 84.88795]内的数值,数值越大对应转换后的值越小,两端分别对应目标值1和-3,全程保留原数值的相对顺序。
可用公式
1. 单单元格下拉版
在对齐A1的结果列单元格(如B1)输入以下公式,下拉填充到B57即可逐行生成结果:
=1 - (A1 - 31.452) * 4 / (84.88795 - 31.452)
2. 一次性生成全量结果的数组版
无需手动下拉,直接在B1输入公式,会自动匹配A1:A57的所有数值批量生成转换结果:
=ARRAYFORMULA(IF(A1:A57="","",1 - (A1:A57 - 31.452) * 4 / (84.88795 - 31.452)))
3. 自动适配极值的通用版
如果后续A列数值更新、极值发生变化,不需要手动修改公式内的固定端点值,可使用MIN/MAX函数自动识别区间,单格下拉版写法:
=1 - (A1 - MIN(A:A)) * 4 / (MAX(A:A) - MIN(A:A))
对应的数组通用版:
=ARRAYFORMULA(IF(A1:A="","",1 - (A1:A - MIN(A:A)) * 4 / (MAX(A:A) - MIN(A:A))))
效果校验
- 原数值31.452经公式计算结果为
1,符合映射要求 - 原数值84.88795经公式计算结果为
-3,符合映射要求 - 所有中间值按固定线性比例转换,原数值相对顺序完全保留
内容的提问来源于stack exchange,提问作者srb633
相关产品推荐
相关产品推荐

