我有一个功能,我称之为InterpolLinear
Function InterpolLinear(x, xvalues, yvalues)
x1 = Application.WorksheetFunction.Index(xvalues, Application.WorksheetFunction.Match(x, xvalues, 1))
x2 = Application.WorksheetFunction.Index(xvalues, Application.WorksheetFunction.Match(x, xvalues, 1) + 1)
y1 = Application.WorksheetFunction.Index(xvalues, Application.WorksheetFunction.Match(y, xvalues, 1))
y2 = Application.WorksheetFunction.Index(xvalues, Application.WorksheetFunction.Match(y, xvalues, 1) + 1)
InterpolLinear = y1 + (y2 - y1) * (x - x1) / (x2 - x1)
EndFunction
我希望该功能能够自动选择所有x值和所有y值,而无需手动调整。我可以有10个x和y值,或者100。该功能正常,但我必须手动调整选择。
我拍了两张截图。
答案 0 :(得分:1)
您只需要定义两个动态调整的命名范围。添加命名范围,例如x_values
并按
=$E$1:INDEX($E:$E;MATCH(1000000;$E:$E;1))
对y_values
执行相同操作,更改对F列的引用。然后
=LinInterp(D1;x_values;y_values)
请注意,您的图片使用了LinInterp
函数,而您的代码使用了函数InterpolLinear
,所以只需确保您的一致
此外,您可以更简单地分配变量,例如:
x1 = xvalues.Cells(Application.Match(x, xvalues, 1),1).Value