我是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
答案 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}}语句中断循环。