“For”循环中的平均值

我在这个代码中有一些问题,我的.Value不起作用。

一切工作正常,如果我做一个硬编码我 – >>> .Value =“=平均(E2:E7)”

但是,当我做下面的下面,它将无法正常工作。 我确定这是 – >范围(“E”……..)

 'Iterate average for close price per week Dim startOfWeek As Integer Dim endOfWeek As Integer numberOfWeek = 52 startOfWeek = 2 endOfWeek = 6 secondRow = 2 For i = 1 To numberOfWeek range("J" + CStr(secondRow)).Select With Selection .Value = "=Average(" + range("E" + CStr(startOfWeek) + ":E" + CStr(endOfWeek)).Select + ")" .Font.Bold = False End With secondRow = secondRow + 1 startOfWeek = startOfWeek + 5 endOfWeek = endOfWeek + 5 Next i 

  1. 引用行号时不需要添加CStr 。 你可以把它们全部删除。
  2. 你可以摆脱所有的select语句,并直接与对象工作。

所以你可以像这样重构你的代码:

 'Iterate average for close price per week Dim startOfWeek As Integer Dim endOfWeek As Integer numberOfWeek = 52 startOfWeek = 2 endOfWeek = 6 secondRow = 2 For i = 1 To numberOfWeek With Range("J" & secondRow) .Value = "=Average(E" & startOfWeek & ":E" & endOfWeek & ")" .Font.Bold = False End With secondRow = secondRow + 1 startOfWeek = startOfWeek + 5 endOfWeek = endOfWeek + 5 Next i