执行Vlookup或Find Per列

时间:2011-05-06 07:31:52

标签: excel-vba vba excel

请帮助我,

例如,我有一种这样的数据集

在Sheet1中

Column A
614545
546425
456426

在Sheet 4中,我有一个这样的命名表:

Column A    Column B    Column C

614545      AAA         1111
564645      AXS         1254
123545      XSF         4524
(And so forth...)

现在我需要的是一个代码,用于搜索工作表4中表格A的相应值。例如,代码会给出这个结果

Sheet 1中

Column A    Col B   Col C
614545      AAA     CCC

(等等......)

我几周来一直试图解决这个问题。但我无法解决它。我能够一次在一个单元格上执行查找功能。我需要一个遍历整个列A(Sheet1)的代码,并返回表(4)中表的相应值。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

试试这个 - 你需要根据你的要求更新数据范围

Sub LookUpValues()
    Dim sourceRng As Range, dataTable As Range, cl As Range

    Set sourceRng = Worksheets("Sheet1").Range("A1:A10") 
    Set dataTable = Worksheets("Sheet4").Range("A1:C100") 

    For Each cl In sourceRng
        cl.Offset(0, 1) = WorksheetFunction.VLookup(cl, dataTable, 2, False)
        cl.Offset(0, 2) = WorksheetFunction.VLookup(cl, dataTable, 3, False)
    Next cl
End Sub

答案 1 :(得分:0)

在大多数情况下添加'VLookup'是完全正常的,但如果你的Excel数据开始变大,那么'VLookup'的速度非常慢。 .Find方法要快得多。

此示例UDF函数 - 在Excel =AltLookup(cell,column)中使用公式例如=AltLookup(A1,3)将在第A列中的Sheet1上的单元格A1中查找文本:Sheet4中的A并返回第3列或第C列

Function AltLookup(ByVal strToFind As String, ByVal column As Long)
Dim rngFind As Range

With Sheet4 'change sheet to lookup on

    With .Columns("A:A") 'assuming lookup on column A

    Set rngFind = .Find(What:=strToFind, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

    If Not rngFind Is Nothing Then
        AltLookup = .Cells(rngFind.Row, column).Value
    Else
        'do nothing or.. AltLookup = vbnullstring
    End If

    End With
End With
End Function