在Excel中的VLookup宏

TKS

我有两个工作表的excel工作簿。工作表A中有多个名称,每个名称都在不同的列中,工作表B包含与工作表A中相同的名称,第二列包含日期。例子:

Worksheet A.       Worksheet B.

Name.              Name.     Dates
Sean               Jake      11/13/15
Jake               Sean      10/11/14
Tom.               Chris     12/12/15

我想做的是设置一个宏,该宏调用VLookup并将工作表A的名称列中的名称作为工作表B上的搜索参数传递。一旦在工作表B上找到该名称,它将返回日期。目前,我通过在工作表A的列中对以下vlookup进行硬编码来手动提取此数据。

=VLOOKUP(A2,'Worksheet B'!A:B,2,FALSE)

任何建议和帮助,我们将不胜感激。

谢谢你。

用户名

您可以在VBA中使用工作表函数。该宏通过将它们发现的值返回到适当的单元格中来利用它们。

Sub auto_VLOOKUP()
    Dim rw As Long, wsB As Worksheet
    Set wsB = Worksheets("Worksheet B")
    With Worksheets("Worksheet A")
        For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            If CBool(Application.CountIf(wsB.Columns(1), .Cells(rw, 1).Value)) Then
                ' VLOOKUP is typically used to return data from the right of the lookup column
                .Cells(rw, 2) = Application.VLookup(.Cells(rw, 1).Value, wsB.Columns("A:B"), 2, False)
                ' INDEX/MATCH function pairs are used to wider scope
                .Cells(rw, 3) = Application.Index(wsB.Columns("N"), Application.Match(.Cells(rw, 1).Value, wsB.Columns("A"), 0))
            End If
        Next rw
        .Cells(2, 2).Resize(rw - 2, 1).NumberFormat = "m/d/yyyy"
    End With
    Set wsB = Nothing
End Sub

您将必须编辑工作表名称并调整与示例数据中提供的列不同的任何列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章