VBA使用相同行中单元格的和公式。行号将随每个循环而变化

时间:2013-11-24 22:24:24

标签: excel vba

我正在使用VBA使用循环从网站中提取数字。我将这些数字导入到F和G列中。我试图在我的VBA中包含一行,这将允许我使用总和公式来添加这两个单元格并将结果发布在E列中。 数字将始终位于同一行,但在F和G列中。

我可以用这种方式使用(ActiveCell.Row)功能吗? 或者应该在循环结束时使用If函数。

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

2 个答案:

答案 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) & ")"