2017-02-15 60 views
1

我要計算一個列中的10個條目的平均或總和或標準差或..說D3:D12和填充行直到Z列。 enter image description hereVBA:水平和垂直運動使用循環動態範圍

第1部分: -

Sub hg() 
Dim i As Long 
Range("D13").Select 
Do Until i = 20 
i = i + 1 
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-10]C:R[-1]C)" 
Cells(ActiveCell.Row, ActiveCell.Column + 1).Select 
Loop 
End Sub 

這我已經編碼。是否有任何方法容易拖動邊路?

我需要再繼續第28行,第43行&等15行不同。

我能想到的是增加了兩個 部分: -

Sub hg() 
Dim i As Long 
Range("D13").Select 
Do Until i = 20 
i = i + 1 
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-10]C:R[-1]C)" 
Cells(ActiveCell.Row, ActiveCell.Column + 1).Select 
Loop 
Cells(ActiveCell.Row + 15, ActiveCell.Column - 20).Select 
End Sub 

這是定向到28行,但不工作沿着這排填充。我無法指導垂直移動。

我不是嚴肅的編碼員,但非常有興趣學習。請幫助沿垂直方向填充。

回答

1

您可以使用偏移()和環路在我現在成功地利用每一次迭代

Sub hg() 
    Dim i As Long`enter code here` 

    For i = 13 To 43 Step 15 '<--| change 43 to your actual last row to populate with formula 
     Range("D1:Z1").Offset(i-1).FormulaR1C1 = "=AVERAGE(R[-10]C:R[-1]C)" 
    Next 
End Sub 
+0

最終代碼步進15排是 子汞柱() 昏暗我只要 範圍(「D13」 )。選擇 直到i = 10 i = i + 1 ActiveCell.FormulaR1C1 =「= AVERAGE(R [-10] C:R [-1] C)」 Selection.Copy Range(Selection,Selection。 End(xlToRight))。Select Selection.PasteSpecial Paste:= xlPasteFormulas,Operation:= xlNone,_ 個SkipBlanks:=假,移調:=假 細胞(ActiveCell.Row,ActiveCell.Column + 1)。選擇 細胞(ActiveCell.Row + 15,4)。選擇 循環 結束子 –

+0

您熱烈鼓勵,以避免避免選擇/選擇/ ActiveXXX模式並使用完全限定的範圍參考。此外,複製/粘貼操作是一項昂貴的操作:您可能無法用少量數據或操作感知它,但您可能希望養成使用Value屬性在範圍之間複製值或直接編寫公式的習慣。試試我的代碼並讓我知道 – user3598756