私は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