- UID
- 1025
- 积分
- 277
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-1-17
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很早以前编制了一个直线(线性)插值和全区间插值VBA函数
现将直线插值函数用法说明如下:
1、打开EXCEL 的VBA编辑器,新建一个模块
2、粘贴下列代码并保存为加载宏
'直线查值函数
'finded 为被查的变量
'xrange 为包含自变量的单元格,输入时必须按列选取,数值
' 必须单调递增
'yrange 为包含函数值的单元格
'
'y=(x-x1)/(x2-x1)*(y2-y1)+y1
'x=finded
'x1=xup x2=xdown
'y1=yup y2=ydown
'y=findvalue
'
Function findvalue(finded As Single, xrange As Object, yrange As Object) As Single
Dim xrow As Integer
Dim xup, xdown, yup, ydown As Single
For xrow = 1 To xrange.Rows.Count
If finded < xrange.Cells(xrow, 1).Value Then Exit For
Next xrow
xup = xrange.Cells(xrow - 1, 1).Value
xdown = xrange.Cells(xrow, 1).Value
yup = yrange.Cells(xrow - 1, 1).Value
ydown = yrange.Cells(xrow, 1).Value
findvalue = (finded - xup) / (xdown - xup) * (ydown - yup) + yup
End Function
[/COLOR]
3、将上述文件加载于加载宏管理器中,这样每次就自动启动了。
4、将X、Y值按列排列,且X值必须为递增,最好将X和Y列分别定义为名称,如X_rang,Y_range。
5、求X1相对应的Y1值,键入=findvalue(X1,X_rang,Y_range)
下述为一个已做好的Excel文件,大家可以试一试。
使用时,请将宏安全级别设为“中”。 |
|