如果...则声明"如果指定列中存在值"

时间:2015-03-19 15:40:43

标签: excel vba excel-vba

我正在尝试编写If...Then条件,以便:

  

如果Sheet1中的单元格A3的值存在于Sheet2的A列中,那么......

我已尝试使用此代码,但它不起作用(错误):

If Worksheets("Sheet1").Range("A3") = Worksheets("Sheet2").Range("A:A") Then
...

2 个答案:

答案 0 :(得分:1)

我不太确定你为什么会在这里收到错误,但你的If..Then条件肯定不会像你希望/期望的那样工作。

您正在尝试将单个值(Sheet1中的A3值)与整个列(Sheet2中的A列)进行比较,这与查看该值是否为中的绝对不同/ em>那一栏。

您可以使用Range.Find方法确定某个值是否存在于给定范围内,如下所示。

Dim varFindThis As Variant
Dim rngLookIn As Range

varFindThis = Worksheets("Sheet1").Range("A3")
Set rngLookIn = Worksheets("Sheet2").Range("A:A")

If Not rngLookIn.Find(varFindThis, LookIn:=xlValues) Is Nothing Then
    ...
End If

有关该功能及其使用方法的详细信息,请参阅this MSDN page

答案 1 :(得分:0)

考虑:

Sub dural()
    Dim r1 As Range, v1 As Variant, r2 As Range
    Set r1 = Sheets("Sheet1").Range("A3")
    v = r1.Value
    Set r2 = Sheets("Sheet2").Range("A:A")

    If Application.WorksheetFunction.CountIf(r2, v) > 0 Then
        MsgBox "its there"
    Else
        MsgBox "its not there"
    End If
End Sub