从数据列中查找列中的值

时间:2018-10-01 00:54:36

标签: excel vba

我想在K(Sheet1)列中搜索C(Sheet2)列中的所有匹配数据。我现在有下面的工作,但是我有20行 C列,并不想重复多次。我似乎无法在C6到C25的整个范围内进行搜索。

此刻我有以下内容。

Sub LabelXXX

 LabelXXX       

   Sheets("new sheet").Select

     For Each r In Intersect(ActiveSheet.UsedRange, Range("K:K"))
          If r.Value Like Sheets("SYD").Range("C6") Then
             r.Offset(0, 1) = "TEST"
        End If
    Next r

End Sub

谢谢

3 个答案:

答案 0 :(得分:0)

   For Each r In Intersect(ActiveSheet.UsedRange, Range("K:K"))


If WorksheetFunction.CountIf(Sheets("SYD").Range("C6:c25"), r.Value) > 0 Then
             r.Offset(0, 1).Value = "TEST"
End If


Next r

我使用工作表函数“ countif”修改您的代码,如果找到该值,则我将计算该值是否存在于另一张表中,然后其值将大于0,这意味着该值存在于另一张表中。

我希望这会有所帮助

答案 1 :(得分:0)

或者您可以使用Find()对象的Range方法为xlPart参数指定LookAt值:

Option Explicit

Sub LabelXXX()
    Dim r As Range
    With Sheets("new sheet") ' reference "new sheet" sheet
        For Each r In Intersect(.UsedRange, .Range("K:K")) ' loop through referenced sheet K column range intersecting referenced sheet used range
            If Not Sheets("SYD").Range("C6:C25").Find(what:=r.Value, LookIn:=xlValues, lookat:=xlPart) Is Nothing Then r.Offset(0, 1).Value = "TEST"
        Next
    End With
End Sub

答案 2 :(得分:0)

您还可以通过如下所示的本地公式来实现此目的:

在单元格L2中,假设您的数据从第2行开始,请插入以下公式

=IF(ISNA(VLOOKUP(K2,SYD!$C$6:$C$25,1,0)),"","TEST")

并复制所需的内容。