我正在使用VBA使用循环从网站中提取数字。我将这些数字导入到F和G列中。我试图在我的VBA中包含一行,这将允许我使用总和公式来添加这两个单元格并将结果发布在E列中。 数字将始终位于同一行,但在F和G列中。
我可以用这种方式使用(ActiveCell.Row)功能吗? 或者应该在循环结束时使用If函数。
Range("E" & (ActiveCell.Row)).Formula = "=SUM("Range("F" & (ActiveCell.Row)) & Range("G" & (ActiveCell.Row))")"
答案 0 :(得分:3)
我将这些数字导入F和G列。
如果要在Col 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 :(得分:1)
在forumla中不要使用Range(),因为它不会返回String。而且,您忘记了操作员,您需要在论坛中添加“+”或“:”:
Range("E" & (ActiveCell.Row)).Formula = "=SUM(F" & ActiveCell.Row & "+" & "G" & ActiveCell.Row & ")"
否则你需要访问forumla中Ranges上的Address方法(这是浪费,因为你已经输入了地址)
但为了清楚起见,下面的代码演示了我的意思:
Range("E" & (ActiveCell.Row)).Formula = "=SUM(" & Range("F" & (ActiveCell.Row)).Address(False,False) & ":" & Range("G" & (ActiveCell.Row)).Address(False,False) & ")"