Excel For循环不完整

Excel For循环不完整,excel,if-statement,for-loop,vba,Excel,If Statement,For Loop,Vba,我收到一个错误,我的下一个没有用于:/ 我错过了什么。我想让它检查C列的cellsy,3,如果它是空的,那么看A列,在G中找到匹配的值,然后在C列的F中给出相应的值。如果它不是空的,那么垂直移动到下一个单元格 Dim x As Double Dim y As Double For y = 2 To 84212 For x = 531 To 632 If IsEmpty(Cells(y, 3)) Then

我收到一个错误,我的下一个没有用于:/ 我错过了什么。我想让它检查C列的cellsy,3,如果它是空的,那么看A列,在G中找到匹配的值,然后在C列的F中给出相应的值。如果它不是空的,那么垂直移动到下一个单元格

    Dim x As Double
    Dim y As Double
    For y = 2 To 84212
        For x = 531 To 632

            If IsEmpty(Cells(y, 3)) Then
                If Cells(y, 1).Value = Cells(x, 6).Value Then Cells(y, 3).Value = Cells(x,7).Value
            Else: Next x
            Else: Next y
End Sub

您已经开始了两个FOR循环,但没有结束任何一个。如果出现以下情况,只需将它们放在Else语句中,而不是结束:

Dim x As Double
Dim y As Double
For y = 2 To 84212
For x = 531 To 632

If IsEmpty(Cells(y, 3)) Then
If Cells(y, 1).Value = Cells(x, 6).Value Then Cells(y, 3).Value = Cells(x,7).Value Then
'Do something
End if
End if

Next x ' End loop with x variable
Next y ' End loop with y variable
       ' Both x and y can be omitted. This is just for clarifications.
End Sub

循环和If语句应类似于:

Dim x As Long ' Use Long, rather than Double for integer arithmetic
Dim y As Long
For y = 2 To 84212
    If IsEmpty(Cells(y, 3)) Then ' Perform this test before starting the 
                                 ' inner loop, thus saving 102 iterations
        For x = 531 To 632
            If Cells(y, 1).Value = Cells(x, 6).Value Then
                Cells(y, 3).Value = Cells(x, 7).Value
                Exit For ' No use looking at other "x" rows once a match has been found
            End If
        Next x
    End If
Next y

还要注意缩进代码如何允许您正确地确保If语句与End If匹配,For语句与Next语句匹配。除了确保您的代码有效外,它还将使代码更易于阅读。请注意,我曾尝试编辑您的问题以缩进代码[我们经常这样做,以使其他试图回答您问题的人更容易理解]而且没有一条语句排成一行-我最终放弃了,因为两条Else语句只有一个块If来匹配它们。

你的If-Then-Then语句将不起作用。我建议你使用免费的智能压头:还有,在我写代码时VBA本身是否会为我缩进,还是必须这样做手动?关于x上的for循环,为什么没有一个else,比如如果它不匹配,不给它一个语句,然后移动到下一个x上?@IsraShaikh-如果if语句没有else分支,如果逻辑表达式的计算结果为False,则不执行任何操作。如果@IsraShaikh重新缩进,VBA IDE将不会自动缩进,但有可用的加载项,则执行将下移到结束后的任何位置。我不使用任何工具,但我认为我可以推荐RubberDuck see,因为至少有两个更好的答案,即VBA问题的回答者comintern和Mat的Mug参与了它的开发。iDevlop还添加了一个链接,作为对您的问题的评论,该链接推荐了另一个加载项。