Excel vba linest函数引用的(range / value) ^(1:3)扩张的矩阵区域形式怎么写 10

linest是Excel的最小二乘插值函数,形如y=mx+b或者y=m1x1+m2x2+...+b(如果有多个区域的x值)对于一元多次幂级数y=anx^n+a(n-1)x... linest是Excel的最小二乘插值函数,
形如
y = mx + b 或者
y = m1x1 + m2x2 + ... +b(如果有多个区域的 x 值)
对于一元多次幂级数y=anx^n+a(n-1)x^(n-1)+a1x+a0
linest函数返回各系数an,an-1,...,a1,a0
假如x,y是列排的区域,幂次为单元格$B$34存放的值,即indirect($B$34)
系数列排区域就是linest(y,x^COLUMN(INDIRECT("$A:"&SUBSTITUTE(ADDRESS(1,COLUMN($A1)+$B$34-1,4),1,))),TRUE,FALSE)
这些系数已经在Excel表中实现了,可以成功插值
问题就是在VBA中系数取值不成功,函数返回#Value!
VBA的LinEst函数定义为
LinEst(y_group / y_max, (x_group / x_max) ^ Application.WorksheetFunction.Column(Application.WorksheetFunction.INDIRECT("$A:" &
& Application.WorksheetFunction.Substitute(Application.WorksheetFunction.Address(1,
Application.WorksheetFunction.Column(A1) +$B$34 - 1, 4), 1, 1))), True, False))
有没有高人指点问题出在哪里呢,本人觉得微软对VBA的LinEst函数应该能重用Excel表格的linest函数
只是语法要怎么写还不得而知
为了防止计算溢出,x和y数值组都采用了归一化处理,即取与最大值的比值y_group / y_max,

x_group / x_max
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏10(财富值+成长值)
cnbubble
2015-06-10 · TA获得超过2607个赞
知道大有可为答主
回答量:1990
采纳率:83%
帮助的人:768万
展开全部

你写的公式挺复杂,LinEst函数我刚看了看,还不太理解函数的全部作用。自己简单试了试,VBA中使用有些注意事项:LinEst返回值是数组,需要用数组变量接收公式返回值:

    Dim a() As Variant
    Cells(7, 5).Formula = "= INDEX(LINEST(B2:B11,A2:A11),2)"
    a = Application.WorksheetFunction.LinEst(Range("B2:B11"), Range("A2:A11"))
    Cells(9, 5).Value = a(2)

上面代码中a(2),就是= INDEX(LINEST函数(……),2)的值,说明计算成功了。

你问题中LinEst前面没有  使用Application.WorksheetFunction.限定,还有你怎么处理计算结果?是不是这些地方出错了?


希望能给你一些启发。

追问

追答
Application.WorksheetFunction 下面没有Column方法或属性!
可以使用Range("A1").Column,获取列号,但我不知道你是不是要获取列号。

另外,提问中 Application.WorksheetFunction.Address 也不对,问题同上,可以改为Range(???).Address 或Cells(?,?).Address

Application.WorksheetFunction.Indirect 也不对!!,难道看不到 写了. (点)之后 没有这一项么?!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式