我需要遍历excel电子表格的行,如果一列中存在特定值,请将同一行中另一列的值复制到电子表格的另一部分。我还需要根据第一列中的值对另一列中的值集合进行求和。
总的来说,我的代码运行良好,除了一小部分。为了避免迭代并复制具有重复值的行,我想在下面的嵌套循环语句中根据我得到的最低行重置“x”(我的行计数器)的值。在这种情况下,我希望“x”迭代到“GoDown”的值,假设“GoDown”大于0.但是,当我这样做时,我的代码会挂起。当我避开最后的“if ... else”语句时,它工作正常,只使用“x = x + 1”。
有谁能告诉我发生了什么,或者如何解决?它挂在第二个范围赋值语句中,这似乎是一个奇怪的地方。非常感谢您的帮助,如果我能澄清任何问题,请告诉我。
Sub NumberCheck()
Dim x As Integer
Dim GoDown As Integer
Dim n As Integer
x = 2
n = 0
Do Until Range("D" & x) = ""
If Range("D" & x) > 50 Then
Range("F" & x).Value = Range("A" & x).Value
Range("G" & x).Value = Range("D" & x).Value
GoDown = x
Do Until Range("C" & GoDown) = 0
n = n + Range("C" & GoDown).Value
Range("J" & x).Value = Range("B" & GoDown).Value
GoDown = GoDown + 1
Loop
Range("H" & x).Value = n
n = 0
End If
If GoDown > 0 Then
x = GoDown
Else
x = x + 1
End If
Loop
End Sub
答案 0 :(得分:0)
我解决了自己的问题。我不小心创造了一个无限循环!我要离开它,以防它帮助其他人。
我没有意识到,当我将“x”迭代为“GoDown”时,有时“GoDown”将低于“x”,从而创建我的无限循环。为了解决这个问题,我在最后的If ... Else中添加了一个AND语句,以确保“x”总是变大。现在一切正常。我想,这显示了我是个新秀。
If GoDown > 0 And x < GoDown Then
x = GoDown
Else
x = x + 1
End If