如何用vba在excel中自定义一个函数

要求根据温度,如150,自动判断区间,插值计算出相应的焓值,差不多向forecast()这样的函数,但是要求是在两个温度间按直线插值,而不是整个组线性拟合... 要求根据温度,如150,自动判断区间,插值计算出相应的焓值,差不多向forecast()这样的函数,但是要求是在两个温度间按直线插值,而不是整个组线性拟合 展开
 我来答
dmnhands
2012-03-21 · TA获得超过175个赞
知道小有建树答主
回答量:158
采纳率:100%
帮助的人:130万
展开全部
我是来学习的,因为我不太清楚什么是插值 什么是直线 什么是线性 ,
我猜测直线插值,就是按比例插值(如果这里猜测错了,楼主就不用往下看了,但请指教)
150焓值=(266.36-132.43)/(200-100)*(150-100)+132.43=199.395

自定义公式为:
Function ForecastII(x, known_y, known_x) As Integer

Dim xRange
Dim xMin
Dim xMax
Dim yRange
Dim yMin
Dim yMax
Dim i

xRange = known_x
yRange = known_y

For i = 1 To UBound(xRange)
If xMin <> "" Then
xMax = xRange(i, 1)
yMax = yRange(i, 1)
Exit For
Else
End If
If x > xRange(i, 1) Then
xMin = xRange(i, 1)
yMin = yRange(i, 1)
Else
End If
Next

ForecastII = (yMax - yMin) / (xMax - xMin) * (x - xMin) + yMin
End Function

'(forecasetII 和forecaset的用法一样
'=ForecasetII(150,"焓值表","温度区间表")
追问
谢谢你的回答,可能我没说清楚,你的理解对的,是线性插值。不过还有点小问题,拿150来说,你的程序好像只是在0-200之间插值,不是100-200,还有恰好等于区间端点值时,我在你的基础上做了修改,(ps:评论写不下,就在追问里写了)
flagshipzx
2012-03-21 · 超过17用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:47.5万
展开全部
sub
end sub
用function
end function替换之后你做的就是函数了,可以像sum一样在表格里应用了
追问
谢谢你,真正要解决的在补充内容,要求一个具体的函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式