使用LINEST执行梯度计算5000次而无需手动输入代码

时间:2015-07-28 10:03:53

标签: excel vba excel-vba loops gradient

我正在尝试对力 - 距离曲线数据集执行梯度计算。我似乎有100组数据(x,y)的计算代码,尽管手动将其连续到5000会花费很多时间。我想知道是否有一个功能,我可以执行以便计算5000套x,y数据。它是一个循环函数吗?对不起,但我是一名生物物理学家,也是编码新手。

以下是我的代码的一些示例:

  Sub S_Grad_Extraction()
'
' S_Grad_Extraction Macro
'

'
    Sheets.Add After:=ActiveSheet
    ActiveCell.FormulaR1C1 = _
        "=LINEST(Sheet1!R[10]C:R[14]C,Sheet1!R[10]C[1]:R[14]C[1])"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = _
        "=LINEST(Sheet1!R[9]C[2]:R[13]C[2],Sheet1!R[9]C[3]:R[13]C[3])"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = _
        "=LINEST(Sheet1!R[8]C[4]:R[12]C[4],Sheet1!R[8]C[5]:R[12]C[5])"
    Range("A4").Select
    ActiveCell.FormulaR1C1 = _
        "=LINEST(Sheet1!R[7]C[6]:R[11]C[6],Sheet1!R[7]C[7]:R[11]C[7])"
    Range("A5").Select

编辑:添加到代码块

1 个答案:

答案 0 :(得分:0)

不确定您要尝试的是什么,但与Range.Offset一起使用的for循环可能会起作用。

For i = 0 To 5000 - 1
    Dim x As String, y As String
    x = Sheet1.Range("A11:A15").Offset(0, i * 2).Address(False, False, xlA1, True)
    y = Sheet1.Range("B11:B15").Offset(0, i * 2).Address(False, False, xlA1, True)

    ActiveCell.Offset(i, 0).Formula = "=LINEST(" + x + "," + y + ")"
Next i

此致