Vlookup Macro 2工作表

时间:2016-11-15 11:31:34

标签: vba excel-vba macros excel

我对VBA很新,任何帮助都将不胜感激。我正在尝试创建一个宏来执行vlookup而不是在单元格中手动键入它。

我的excel文件有2个工作表,一个名为' Microsoft'另一个名为' SN用户名'。

所以我在' SN用户名'中查找数据将查找结果返回到工作表' Microsoft' (B21)

这是我在VBA中尝试做的vlookup = VLOOKUP(B21,' SN用户名'!A:B,2,FALSE)

任何帮助都将不胜感激! 感谢

1 个答案:

答案 0 :(得分:0)

您可以使用VBA版本函数Application.VLookup

下面的片段代码检查Sheet" Microsoft"中的Cell B21的值。可以在工作表A列中找到:B" SN用户名"。如果发现它将第二列返回到单元格A21(您可以根据需要对其进行修改)。如果没有,则在单元格A21中放入" Item Not Found"的文本消息。 - 仅供参考。

Option Explicit

Sub VLookup_withErrHandling()

Dim Cell                As Range
Dim Rng                 As Range
Dim lRow                As Range

Set Cell = Sheets("Microsoft").Range("B21")
Set Rng = Sheets("SN Username").Range("A:B")

If Not IsError(Application.VLookup(Cell, Rng, 2, False)) Then
    Cell.Offset(0, -1).Value = Application.VLookup(Cell, Rng, 2, False)
Else
    Cell.Offset(0, -1).Value = "Item Not Found"
End If

End Sub

添加For循环:如果您要循环浏览" Microsoft"中的许多行表格,您可以在下面添加以下代码:

Dim lRow                As Long

' just for example, loop from row 21 until row 30
For lRow = 21 To 30
    Set Cell = Sheets("Microsoft").Range("B" & lRow)

    If Not IsError(Application.VLookup(Cell, Rng, 2, False)) Then
        Cell.Offset(0, -1).Value = Application.VLookup(Cell, Rng, 2, False)
    Else
        Cell.Offset(0, -1).Value = "Item Not Found"
    End If

Next lRow

修改 1:根据下面的PO修改说明:

Option Explicit

Sub VLookup_withErrHandling()

Dim Cell                As Range
Dim Rng                 As Range
Dim LastRow             As Long
Dim lRow                As Long

With Sheets("SN Username")
    ' find last row with username in column A
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

    Set Rng = Sheets("SN Username").Range("A2:B" & LastRow)
End With

' loop through row 2 until row 20
For lRow = 2 To 20
    Set Cell = Sheets("Microsoft").Range("A" & lRow)

    If Not IsError(Application.VLookup(Cell.Value, Rng, 2, False)) Then
        Cell.Offset(0, 1).Value = Application.VLookup(Cell.Value, Rng, 2, False)
    Else
        Cell.Offset(0, 1).Value = "UserName Not Found in SN UserNames sheet"
    End If

Next lRow

End Sub