Excel - COUNTA()的替代方案?

时间:2017-01-13 15:30:20

标签: excel vba excel-vba

我正在创建一个程序,用于计算从.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是如何工作的

你能帮我解决这个问题吗?

0 个答案:

没有答案