使用 LINEST 进行梯度计算 5000 次,无需手动输入代码
performing gradient calculations with LINEST 5000 times without manually inputting code
我正在尝试对力-距离曲线数据集执行梯度计算。我似乎有 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
编辑:添加到代码块
不确定您要实现的目标,但与 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
此致
我正在尝试对力-距离曲线数据集执行梯度计算。我似乎有 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
编辑:添加到代码块
不确定您要实现的目标,但与 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
此致