在一个单列VBA中加上每一个奇数行

我有一个代码,search一个Excel填充单词的距离,取其旁边的单元格的值,粘贴到一个新的单元格,然后将所有的单元格。 哪个工作好,但我现在需要find一种方法来总结甚至行号。 那有意义吗?

Sub Distance_Check() Dim DistanceCheck As String Dim DistanceNumber As String Dim DistanceSum As String Dim DistanceTotal As String DistanceCheck = MsgBox("Would you like to check the distance?", vbYesNo) If DistanceCheck = vbYes Then If IsArray(fname) Then Workbooks.OpenText fname(1) i = 1 findStr = "Distance" Set foundCel = Range("A:A").Find(what:=findStr) If Not foundCel Is Nothing Then firstAddress = foundCel.Address Do Range("J" & i).Value = foundCel.Offset(0, 1).Value Set foundCel = Range("A:A").FindNext(foundCel) i = i + 1 Loop While Not foundCel Is Nothing And foundCel.Address <> firstAddress End If Set wkbSourceBook = ActiveWorkbook DistanceNumber = i - 2 DistanceSum = WorksheetFunction.Sum(Range(Cells(2, 15), (Cells(DistanceNumber + 1, 15)))) DistanceTotal = DistanceSum / DistanceNumber If DistanceNumber = Cells(2, 12) Then MsgBox ("No error found wihin distance") Else MsgBox ("Error found with distance") End If Else End If Call Save_Data End Sub 

你的方式会去这个使用for循环的

 cells(DistanceNumber(j,+1) 

其中j = 0, j = j +2 ,直到j > DistanceNumber

这会工作吗? 如果是的话,你会怎么做呢?

谢谢

以所需的增量循环一个循环的快速方法是使用Mod运算符 ,它将两个数字相除并返回任何余数(例如,7 mod 2 = 1,因为两个sixes适合七个,剩下一个)。

您可以使用Find方法确定的范围的行属性,并且由于您要跳过两个模,所以应该为零:

 If foundcel.Row Mod 2 = 0 Then Range("J" & i).value = foundcel.Offset(0, 1).Value 

也就是说,如果像这样使用For循环,则有一种“内置”方法来逐步循环

 For x = 2 to 10 Step 2 ' Do stuff Next x 

你也可以使用这个方法来倒退,例如

 For x = 100 to 0 Step -10 ' Do stuff backwards! Next x