我猜测直线插值,就是按比例插值(如果这里猜测错了,楼主就不用往下看了,但请指教)
150焓值=(26636-13243)/(200-100)(150-100)+13243=199395
自定义公式为:
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,"焓值表","温度区间表")vba代码可以实现,但是比较繁琐(新手),可以用office的定义名称来实现。
要借助空白区域,在空白的任意一个单元格(我的是a8)插入——名称,
(2003版本的是插入——名称,2007版本的是公式——定义名称),名称写col,引用位置上写=GETCELL(63,Sheet2!A2:E3),,(a2:e3表示是有颜色的区域,图中456行的颜色是我后面加的确定,)关闭,在a8处写=col,回车得到一个数字55(这个数字就是当前a2单元格的背景颜色代码),然后拖动单元格到和元数据单元格区域大小,2003版的按f9刷新,2007版的不用。然后在f2那些写=sumif(a8:e8,55,$a$1:$e$1),回车,向下拖动公式就可以了。($a$1:$e$1表示绝对引用需要做加运算的数字区域)
传布上来。。。。。。解决了,代码如下:
Private
Sub
KILLONE()
Dim
i
As
Integer
Dim
Number
As
Double
Number
=
Worksheets("sheet1")Cells(1,
1)Value
Set
myRange
=
Worksheets("Sheet1")Range("A1:C10")
i
=
ApplicationWorksheetFunctionRank(Number,
myRange,
0)
End
Sub
你的错误:RANK的参数1需要为double型的值(如35类似的值),参数2需要为range类型,建议参考我的写法为RANGE类型。
需要注意的是:单元格A1中确实存在Double类型的值,否则出现1004类型错误。
运行上述代码,如果要写公式,就直接用双引号括起来即可,如: range("A1")="=IF(P9=0,0,P9/(100+P9)T9U9)"
如果想直接得到值:
IF RANGE("P9")=0 THEN
range("A1")=0
ELSE
range("A1")=RANGE("P9")/(100+RANGE("P9"))RANGE("T9")RANGE("U9")
END IF
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)