2017-01-26 38 views
0

我希望每隔一列插入一個新列大約260次,然後我需要填寫新列公式,它引用左側的立即列。這是我要插入一個新列:VBA Excel:插入一個新列,每隔n列填充一個公式,其中立即向左列提供

Sub insert_column_every_other() 
For colx = 2 To 266 Step 2 
Columns(colx).Insert Shift:=xlToRight 
Next 
End Sub 

但我粘在公式,它只是將公式複製爲是。我需要的C3值變化和參考眼前列向左(其他部分可能不是100%我是新來的VBA所以所有的改正都讚賞):

Sub Repeat() 
For ColNum = 3 To 2000 Step 2 
    Range(Cells(2, ColNum), Cells(21, ColNum)).FormulaR1C1 ="=AVERAGE(OFFSET(C3,1,0,2,1))" 
Next ColNum 
End Sub 
+1

在公式中將'C3'改爲'C [-1]'。也就是說,你的公式看起來很可疑。你想要它做什麼? –

+1

在R1C1表示法中,'C3'與A1表示法中的'$ C:$ C'意思相同。當公式在列C中時,@ chrisneilsen的建議將生成等同於'B:B'的公式,當公式在列E中時'D:D'等等(但是正如Chris所說,當與一行結合時)但是如果你打算把'C3'表示單元格的左邊一列和放置公式的單元格下面一行的單元格,那麼你可以直接使用R1C1公式= = AVERAGE( R [2] C [-1]:R [3] C [-1])'並完全避免「OFFSET」。 – YowE3K

+0

@chrisneilsen ...我有一個數據集,每個樣本有兩次測量(約100行),用於〜267種測量(列)。我需要爲兩個代表提取每種類型測量的平均值,最後我需要將行數減半,以僅顯示平均值。 – andemexoax

回答

1

我認爲,未來的代碼應該做你想做的

Sub insert_column_and_Formula() 
    Dim colx As Long 
    Dim H As Worksheet 
    Set H = H3 'Replace H3 with the sheet that contains your data 

    For colx = 2 To 266 Step 2 
     'Insert the Column' 
     Call H.Columns(colx).Insert(Shift:=xlToRight) 
     'Put the formula in the new Column' 
     H.Range(H.Cells(2, colx), H.Cells(21, colx)).FormulaR1C1 = "=AVERAGE(OFFSET(RC[-1],1,0,2,1))" 

    Next colx 
End Sub 

希望這有助於你,任何問題讓我請知道

+1

您錯過了'H.'對象引用來限定其中一個'Cells'。 – OldUgly

+0

謝謝,我編輯我的帖子 –

+0

@FernandoCT ...這是從你的建議拋光代碼...謝謝...'Sub insert_column_and_Formula() Dim colx As Long Dim H As Worksheet Set H = Sheet1'Sheet1包含=表名的數據」 對於COLX = 4向536步驟2 ‘插入列’ 呼叫H.Columns(COLX).Insert(移位:= xlToRight) ‘把公式中的新列’ H.Range(H.Cells(2,colx),H.Cells(41,colx))。FormulaR1C1 =「= AVERAGE(R [0] C [-1]:R [1] C [-1])」 '='AVERAGE(OFFSET(RC [-1],0,0,2,1))'' '下一個colx End Sub' – andemexoax

相關問題