使用减法的VBA循环

时间:2017-11-05 19:11:13

标签: excel vba excel-vba for-loop

我正在尝试开发一个'for loop'宏来计算相邻列中两个日期之间的持续时间。

我目前的代码:

Sub Enter_Formulas()

FinalRow = Cells(Rows.Count, 2).End(xlUp).Row 'Counts # of rows in the data set

For x = 5 To FinalRow

Cells(x, 10).Formula = "=I5-H5"

End Sub

这将准确地返回I5和I5之间的差异。 H5,但我希望公式向下流动。 (即下一行应计算I6 - H6然后计算I7-I8 ..依此类推等等)

非常感谢任何建议!!

2 个答案:

答案 0 :(得分:0)

我建议不要使用循环,您可以一次性自动填充整个范围:

Sub Enter_Formulas()

FinalRow = Cells(Rows.Count, 2).End(xlUp).Row 'Counts # of rows in the data set

Range(Cells(5, 10).address, Cells(FinalRow, 10).address).Formula = "=I5-H5"

End Sub

但是,如果你必须使用循环,那么试试这个:

For x = 5 to FinalRow
Cells(x,10).Formula = "=" & Cells(x,9).Address & "-" & Cells(x,8).Address
Next x

通过连接依赖于x的单元格地址,它们每次也会增加一行。

答案 1 :(得分:0)

你也可以这样做,如果你必须使用循环(我通常不会),使用R1C1形式的寻址:

For X = 5 To FinalRow
    Cells(X, 10).FormulaR1C1 = "=RC[-1]-RC[-2]"
Next X

如果您的工作表使用A1参考样式,则会正确翻译。