/ / Vlookup Macro 2ワークシート - vba、excel-vba、マクロ、excel

Vlookupマクロ2ワークシート - vba、excel-vba、マクロ、Excel

私はVBAにとても不慣れで、どんな助けでも評価されるでしょう。セルに手動で入力するのではなく、vlookupを実行するためのマクロを作成しようとしています。

私のExcelファイルには2つのワークシートがあり、1つは "Microsoft"、もう1つは "SN Username"という名前です。

そこで、 "SN Username"のデータをルックアップして、シート "Microsoft"に戻った(B21)。

これがVBAでやろうとしているvlookup imです。 = VLOOKUP(B21、 "SNユーザー名"!A:B、2、FALSE)

どんな助けでも感謝するでしょう! ありがとう

回答:

回答№1は0

あなたはできるVBAバージョン Application.VLookup.

以下のコードは、値がシート "Microsoft"のセルB21はシート "SNユーザー名"の列A:Bにあります。見つかった場合は2番目の列をセル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 ループ:あなたの "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