我對VBA非常陌生,任何幫助將不勝感激。我試圖創建一個宏來做一個vlookup,而不是手動在單元格中輸入它。Vlookup Macro 2工作表
我的excel文件有兩個工作表,一個名爲「Microsoft」,另一個名爲「SN用戶名」。
所以我找了查找的結果,「SN用戶名」的數據返回到表「微軟」(B21)
下面是VLOOKUP我嘗試在VBA做 = VLOOKUP(B21 ,'SN用戶名'!A:B,2,FALSE)
任何幫助將不勝感激! 謝謝
我對VBA非常陌生,任何幫助將不勝感激。我試圖創建一個宏來做一個vlookup,而不是手動在單元格中輸入它。Vlookup Macro 2工作表
我的excel文件有兩個工作表,一個名爲「Microsoft」,另一個名爲「SN用戶名」。
所以我找了查找的結果,「SN用戶名」的數據返回到表「微軟」(B21)
下面是VLOOKUP我嘗試在VBA做 = VLOOKUP(B21 ,'SN用戶名'!A:B,2,FALSE)
任何幫助將不勝感激! 謝謝
你可以在VBA版本功能Application.VLookup
。
下面的零件代碼檢查工作表「Microsoft」中的單元B21的值是否在工作表「SN用戶名」的列A:B中找到。如果發現它將第二列返回到單元格A21(您可以根據需要修改它)。如果不是,則在單元格A21中放入一條「找不到物品」的短信 - 僅供參考。
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
循環:如果你通過你的「微軟」表多行要循環,你可以添加一段代碼如下:
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
嗨,謝謝您的迴應!我對此很陌生,所以請和我一起裸照。 讓我試着再解釋一遍,因爲我想我以前可能沒有做過。 –
好吧,你要編輯你的文章嗎? –
嗨嗨,非常感謝您的回覆!我對此很陌生,所以請和我一起裸照。 讓我試試解釋這一次(道歉) 表「微軟」在「列中的」用戶名列表(用戶名開始於A2,完成A20) 表「SN用戶名」具有完全相同的用戶名列表列A(用戶名開始於A2並完成A20),但在'B列'中有一個'全名'列表(全名開始於B2並完成B20) 所以我想要做的是對用戶名和Vlookup 'B''微軟'工作表中返回'全名'值 –
您是否正確地搜索該網站?我現在已經看過這麼多次了。請參閱以下鏈接以協助您:[http://stackoverflow.com/questions/40512439/how-to-get-vlookup-to-select-down-to-the-lowest-row-in-vba/40512623# 40512623] :) – user1
如果我理解正確,這聽起來像你希望vlookup的結果進入B21,但通過傳遞B21作爲參數,你有一個循環引用。如果您發佈任何錯誤或意外行爲的詳細信息,這將有所幫助。 – jsheeran
@Shah Miah您可以使用帶有Application.VLookup的VLOOKUP的VBA版本,它取決於您需要哪種類型的解決方案。請在下面檢查我的答案,並讓我知道它是否適用於您 –