条件插值Excel
我有以下excel设置是非常巨大的,但这是一个简化的设置:
Site1 X-Given Y-Given Site2 X-New-Given Y-Interpolated A 10 400 A 25 550 A 20 500 A 25 550 A 30 600 A 26 560 A 40 700 B 27 570 A 50 800 B 30 600 B 10 400 B 15 450 B 20 500 B 25 550 B 30 600 B 30 600
我试图完成的是每个Y插值只根据其特定的位置进行插值,而不会有任何交叉。 所以站点A只能插入站点A,而站点B也是这样……等等。
我正在使用具有以下语法的插值excel插件:= interpolate(x_array,y_array,x_given)
谢谢您的帮助!
你可以尝试这个工作表function替代…与数据在A1:E9
,在F2
input并填写:
=FORECAST(E2,IF(MMULT(ROW(B$2:B$9)-LOOKUP(0,(B$2:B$9>=E2)/(A$2:A$9=D2),ROW(B$2:B$9))-0.5,1)^2<1,C$2:C$9),B$2:B$9)
更新 :这是用CTRL + SHIFT + ENTERinput一个稍微短一点的替代
=PERCENTILE(IF(A$2:A$9=D2,C$2:C$9),PERCENTRANK(IF(A$2:A$9=D2,B$2:B$9),E2,20))
这假定variables和返回值在两个边界之间呈正相关。
背景
如果你打算使用工作表函数来实现这一点,那么明显的办法是findX的相邻两点:(X1,Y1)和(X2,Y2)。 然后计算Y使用:
Y = Y1 + (X - X1) * (Y2 - Y1) / (X2 - X1)
问题在于这会导致涉及6个INDEX / MATCH组合的冗长的公式以及另外6个将数据限制到指定站点的条件。 这导致一个寻找其他选项…
1 。 第一个公式看起来很复杂,但它所做的只是基于同一站点的两个相邻点进行直线拟合。 评估上面第三行的公式 – 突出显示公式的每个部分并按F9 – 给出:
=FORECAST(26,{FALSE;500;600;FALSE;...},{10;20;30;40;...})
FORECAST忽略非数字数据,所以结果与第二个和第三个参数使用{500,600}和{20,30}相同。 你可以在公式的其他部分使用F9来进一步分解 – 我会留下细节给你。 (MMULT(…,1)部分只是将参数更改为数组,因此您可以input公式而不使用数组input。)
2 。 第二个公式更容易遵循。 首先要注意的是,在Excel中,百分位是通过线性插值计算出来的,IF部分只是将数字数据限制在指定的位置。 假设数据在增加,那么我们可以在PERCENTILE公式中find与x范围内的查找值相匹配的k值,并返回y值范围内的k值。 对于这个问题的例子:
26 =PERCENTILE({10,20,30,40,50},0.4) 560 =PERCENTILE({400,500,600,700,800},0.4)
要计算0.4的值,可以使用与PERCENTILE相反的PERCENTRANK:
0.4 =PERCENTRANK({10,20,30,40,50},26) 0.4 =PERCENTRANK({400,500,600,700,800},560)
上面的公式通过结合这两个函数,最后一个参数设置为20,以获得全部精度(Excel将内部值存储在15-17位左右的精度内)。
由于您使用的工具基于.xll添加到Excel中,所以您(或我们)无法修改代码或创build允许添加条件的自定义interpolate
版本。
相反,您必须分开筛选数据,然后在筛选的数据集上运行自定义函数。