我正在使用Excel VBA程序,该程序显示一系列x,y值的散点图以及带有线性最小二乘方程和R平方的趋势线。我想在我的VBA程序中捕获“斜率和截距”。在本机XL中,我将在类似于此类的单元格中输入以下内容:
=SLOPE(B2:B1026,A2:A1026)
但是,如下所示,当我尝试在VBA中执行此操作时,我得到了#Value! 2015错误。我究竟做错了什么?
我可以进行一些字符串操作以从趋势线图例中提取它们,但我更愿意直接进行操作。
我也尝试过使用“ Application.WorksheetFunction.Intercept ...”,但是会引发错误“无法获取worksheetFunction类的Intercept属性”。
中显示了一些示例数据,图形和斜率计算这是相关的VBA代码,请注意,最大值为1026,但我也直接将1026编码为无效。
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.FullSeriesCollection(1).Trendlines.Add
ActiveChart.FullSeriesCollection(1).Trendlines(1).Select
Selection.DisplayEquation = True
Selection.DisplayRSquared = True
Cells(2, 10) = Application.Intercept("$b2:$b" & Max, "$a2:$a" & Max)
Cells(3, 10) = Application.Slope("$b2:$b" & Max, "$a2:$a" & Max)
Cells(4, 10) = Application.RSq("$b2:$b" & Max, "$a2:$a" & Max)
答案 0 :(得分:1)
此语法错误
Application.Slope("$b2:$b" & Max, "$a2:$a" & Max)
根据WorksheetFunction.Slope method,您提交给Slope
的参数必须是Range
对象。
Application.Slope(Range("$b2:$b" & Max), Range("$a2:$a" & Max))