如何用MS Excel单单元格函数计算Coefficient C及数组插值
问题描述

当R/W=0.64且H/W=1.8时,如何通过单单元格/单步骤函数计算Coefficient C?
详细问题:
若存在一个包含多行多列的表格,如何从该数组中计算首行或首列未包含的任意输入对应的数值?
解决方案(以Excel为例)
这类问题本质是二维线性插值,可以用嵌套的插值函数实现单单元格计算,以下分场景说明:
场景1:其中一个维度匹配表格值(如H/W=1.8正好在首列)
直接对R/W维度做横向插值,用FORECAST+XLOOKUP组合:
=FORECAST(0.64, XLOOKUP(1.8, A:A, B:E), A1:E1)
- 逻辑:先通过
XLOOKUP定位H/W=1.8对应的整行数据,再用FORECAST对R/W=0.64做线性插值,得到对应C值。
场景2:两个维度都不匹配表格值
需要先对其中一个维度插值,再对另一个维度插值,用双层FORECAST实现:
比如计算H/W=1.7、R/W=0.64的C值:
=FORECAST(1.7, FORECAST(0.64, XLOOKUP(1.6, A:A, B:E), A1:E1), FORECAST(0.64, XLOOKUP(2.0, A:A, B:E), A1:E1), 1.6, 2.0 )
- 逻辑:先分别算出H/W=1.6和2.0时,R/W=0.64对应的插值结果,再用这两个结果对H/W=1.7做纵向插值。
通用单单元格函数(自动适配任意输入)
如果要写一个无需手动指定上下限的通用函数,用XLOOKUP的近似匹配自动获取相邻值:
=FORECAST(目标H/W值, FORECAST(目标R/W值, INDEX(数据区域, XLOOKUP(目标H/W值, 首列H/W区域, ROW(数据区域)-ROW(数据区域首行)+1,,1), 0), 首行R/W区域), FORECAST(目标R/W值, INDEX(数据区域, XLOOKUP(目标H/W值, 首列H/W区域, ROW(数据区域)-ROW(数据区域首行)+1,,-1), 0), 首行R/W区域), XLOOKUP(目标H/W值, 首列H/W区域, 首列H/W区域,,1), XLOOKUP(目标H/W值, 首列H/W区域, 首列H/W区域,,-1) )
替换成实际单元格引用(比如数据区域是B2:E5,首列H/W是A2:A5,首行R/W是B1:E1),计算R/W=0.64、H/W=1.8的函数为:
=FORECAST(1.8, FORECAST(0.64, INDEX(B2:E5, XLOOKUP(1.8, A2:A5, ROW(B2:E5)-ROW(B2)+1,,1), 0), B1:E1), FORECAST(0.64, INDEX(B2:E5, XLOOKUP(1.8, A2:A5, ROW(B2:E5)-ROW(B2)+1,,-1), 0), B1:E1), XLOOKUP(1.8, A2:A5, A2:A5,,1), XLOOKUP(1.8, A2:A5, A2:A5,,-1) )
这个函数会自动识别目标值的相邻行/列,完成二维插值计算,全程单单元格操作。
内容的提问来源于stack exchange,提问作者Nirottam Singh
相关产品推荐
相关产品推荐

