2013-11-24 16 views
1

我正在使用VBA從網站中使用循環提取數字。我將這些數字導入到列F和G中。我試圖在我的VBA中添加一行,這將允許我使用總和公式來添加這兩個單元格,並在E列中輸出結果。 數字將始終爲在同一行中,但列F和G.VBA使用相同行中單元格的求和公式。行號將隨每個循環而改變

我可以用這種方式使用(ActiveCell.Row)函數嗎? 或者應該在我的循環結束時使用If函數。

Range("E" & (ActiveCell.Row)).Formula = "=SUM("Range("F" & (ActiveCell.Row)) & Range("G" & (ActiveCell.Row))")" 
+0

沒有不使用ActiveCell.Row –

+0

爲什麼不activecell.row方法?代碼有可能失敗嗎? – TPJ87

+1

'爲什麼不使用activecell.row方法?代碼有可能失敗嗎? - TPJ87 1分鐘前'[有趣的閱讀](http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select) –

回答

1

在forumla不使用Range(),因爲它不會返回一個字符串。而且,你忘了操作員,你需要添加「+」或「:」入Forumla:

Range("E" & (ActiveCell.Row)).Formula = "=SUM(F" & ActiveCell.Row & "+" & "G" & ActiveCell.Row & ")" 

否則,你就需要訪問該範圍內的地址的方法在forumla(這是一個浪費,因爲你反正輸入的地址)

,但爲了清楚起見,下面的代碼演示了我的意思:

Range("E" & (ActiveCell.Row)).Formula = "=SUM(" & Range("F" & (ActiveCell.Row)).Address(False,False) & ":" & Range("G" & (ActiveCell.Row)).Address(False,False) & ")" 
+0

當我輸入這個我得到一個錯誤,說編譯錯誤:聲明的預期結束。並在「= Sum(」 – TPJ87

+0

@ TPJ87)後突出顯示範圍,請參閱編輯 – hammus

+0

Range(「E」&(ActiveCell.Row))。Formula =「= SUM(」F「&ActiveCell.Row&」+ 「&」G「&ActiveCell.Row)」 現在它突出顯示與「F」相同的錯誤信息 – TPJ87

3

I have these numbers imported into column F and G.

如果你想插入上校E中的公式,然後用這個。這將一次性輸入Col E中所有相關單元格中的公式。

見這個例子

Sub Sample() 
    Dim lRow As Long 
    Dim ws As Worksheet 

    '~~> Change this to the releavnt sheet name 
    Set ws = ThisWorkbook.Sheets("Sheet1") 

    With ws 
     '~~> Find Last row in col E which has data 
     lRow = .Range("E" & .Rows.Count).End(xlUp).Row 

     '~~> This will put the formula from E1 to E last row 
     .Range("E1:E" & lRow).Formula = "=SUM(F1+G1)" 
    End With 
End Sub 
+1

整齊優雅的VBA(可以是一個挑戰)+1 – hammus

+0

@leemo:謝謝:)但爲什麼它可能是一個挑戰? –

+1

@SiddarthRout您可能會比我有更多的經驗,但我總是發現VBA是一種難以保持整潔的語言 – hammus

相關問題