如何停止每个循环

时间:2015-06-26 12:39:33

标签: excel vba for-loop each

我是VBA的新手。我正在尝试制作一个[1,2,3,4].filter(function(e){ return [2,3].indexOf(e) === -1; }); 循环,它为for each提供了一个值的位置,但我仍然在我的陈述x=y中获得最后Y的位置。我希望有一个人可以帮助我。 亲切的问候

(C10)

这就是我想要的。

Sub Find_Matches()
    Dim CompareRange As Variant, x As Variant, y As Variant
        Set CompareRange = Range("C1:C10")
        For Each x In Selection
        For Each y In CompareRange
            If x = y Then y.Select
    Application.CutCopyMode = False
    Selection.Copy
    x.Offset(0, 1).Select
    Selection.PasteSpecial Paste:=xlPasteFormats
    Selection.PasteSpecial Paste:=xlPasteValues
    x.Offset(0, 3).Value = y.Address

        Next y

   x.Offset(0, 5).Select



        Next x

End Sub

这就是我得到的......

A       B       C       D
1   1   5   $C$4
2       4   
3   3   6   $C$6
4   4   1   $C$2
5   5   9   $C$1
6   6   3   $C$3
7       75  
8       12  
9   9   55  $C$5
10      90  
11          
12  12      $C$8

2 个答案:

答案 0 :(得分:1)

尝试

if x=y then exit for

此外,您要复制x,而不是选择。

这是您的代码

    Sub Find_Matches()

Range("A1:A12").Select

Dim CompareRange As Variant, x As Variant, y As Variant
Set CompareRange = Range("C1:C10")

For Each x In Selection

    For Each y In CompareRange

        If x = y Then

            Application.CutCopyMode = False
            x.Copy
            x.Offset(0, 1).PasteSpecial Paste:=xlPasteFormats
            x.Offset(0, 1).PasteSpecial Paste:=xlPasteValues
            x.Offset(0, 3).value = y.Address

        Exit For

        End If

    Next y

    x.Offset(0, 5).Select

Next x

End Sub

答案 1 :(得分:0)

当条件满足时,您可以使用{{1}}语句中断循环。