我正在创建一个程序,用于计算从.csv文件导入的多组数据中的斜率和截距。这些数据集的范围是动态的。它们可以根据数据本身进行更改。
为了计算考虑动态范围的每组的斜率和截距,我使用
=INDEX(LINEST(INDIRECT("B3:B"&COUNTA(B:B)+1),INDIRECT("A3:A"&COUNTA(A:A))),1)
=INDEX(LINEST(INDIRECT("B3:B"&COUNTA(B:B)+1),INDIRECT("A3:A"&COUNTA(A:A))),2)
然而,该程序花费了太多时间(超过2分钟)来执行计算,因为我有大约1000个点的12组数据。
我注意到,如果我只使用下面的操作,而不考虑COUNTA()
定义的动态范围,则计算结束时间约为5秒。
=INDEX(LINEST(B3:B998,A3:A998),1)
=INDEX(LINEST(B3:B998,A3:A998),1)
在宏中,我尝试过这样的事情:
Range("C3").Select
ActiveCell.FormulaR1C1 = _
"=INDEX(LINEST(R[0]C[-1]:R[p-o]C[-1],R[0]C[-2]:R[p-o]C[-2]),1)"
p和o适用于我的动态范围的结束和开始:
Sheets("Ranges").Activate
o = Cells(4, 3).Value
p = Cells(4, 4).Value
但它无效。我想我真的不明白R1C1是如何工作的
你能帮我解决这个问题吗?