2015-07-28 57 views
2

我正試圖對力 - 距離曲線數據進行梯度計算。我似乎有100組數據(x,y)的計算代碼,儘管手動將其繼續爲5000會花費很多時間。我想知道是否有一個函數可以執行以計算5000組x,y數據。它是一個循環功能?對不起,但我是一名生物物理學家,也是編碼方面的新手。使用LINEST 5000次進行梯度計算而無需手動輸入代碼

下面是我的一些代碼示例:

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 

編輯:添加代碼塊

回答

0

你試圖acheive什麼不知道,但一個與Range.Offset使用可以做的工作循環。

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 

問候

+0

千恩萬謝勒布,這似乎是一個小小的例外合作得非常好。 A和B是一組數據,C和D是下一個。 VB代碼似乎將下一個梯度計算作爲B和C,然後是C和D.在我需要創建的原始代碼中有一個小的變化。非常感謝,希望能儘快從你這裏。 –

+0

您確定您使用了最新版本的代碼,因爲我在之前的修改中修復了它。確保偏移是'Sheet1.Range(「A11:A15」)。Offset(0,i * 2)' – Seb

+0

神奇的東西Seb,修改後的代碼非常棒!不能謝謝你。我真的需要學習VB並親自操作數據。非常感謝您的幫助。非常感謝。如果有任何想法我可以做得更高(因爲我也是新手),請讓我知道。 –

相關問題