VLookupを使ったマクロで抽出したいと思っています。下記のマクロコードの設定ついて、Sheet1に検索するデーターがあり、A列~K列に2000件程あります。これのK列を検索してSheet3のA列の番号(Sheet1・Sheet3ともにA列に同じ形式の番号がある)を検索してJ列に結果を出したいのですが、うまくいきません。For i = 1 To SerchKey.Rows.Countの設定がおかしいのか。OutputRange(i, 1) = WorksheetFunction.VLookup(SerchKey(i, 1), SerchRange, 2, False)がエラーになってしまいうまくできません。設定をお教え願えませんか。よろしくお願い致します。
Sub Sample()
Dim SerchKey As Range '検索値
Dim SerchRange As Range '検索範囲
Dim OutputRange As Range '出力範囲
Dim i As Long
Set SerchKey = Worksheets("Sheet3").Range("A2:A2000")
Set SerchRange = Worksheets("Sheet1").Range("A2:J2000")
Set OutputRange = Worksheets("Sheet3").Range("J2:J2000")
Application.ScreenUpdating = False
For i = 1 To SerchKey.Rows.Count
OutputRange(i, 1) = WorksheetFunction.VLookup(SerchKey(i, 1), SerchRange, 2, False)
Next
Application.ScreenUpdating = True
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは
どのようなエラーなのか不明ですが、「VLookupのプロパティを取得できません」というものなら、単純に、関数の結果がエラー値になる場合と同じです。
・検索値が存在しない
・空白値を検索値としている
などが考えられます。
上記の場合であれば、事前にチェックしてエラー回避を行うか、エラー処理を付け加えるかでしょう。
あるいは、結果を表示するセルに関数式を設定して、固定値化する方法を取れば、エラー処理をしなくてもそのままの表示になります。
OutputRange.FormulaLocal = "=Vlookup(A2,Sheet1!A$2:B$2000,2,false)"
OutputRange.Value = OutputRange.Value
のような感じでしょうか。
(ループや変数定義も不要になります)
それ以外が原因の場合は、エラー発生行やエラーの内容などを明記しておいた方が、適切な回答を得られると思います。
なお、ご質問には関係ありませんが、VLookupの第三引数が2なので、検索範囲はA2:B2000でも十分なのではないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
Excelで、あるセルの値に応じて...
-
マクロ 最終列をコピーして最終...
-
DataGridViewに空白がある場合...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
-
B列の最終行までA列をオート...
-
VBAを使って検索したセルをコピ...
-
VBAで、離れた複数の列に対して...
-
マクロ 関数を使った抽出でエラ...
-
IIF関数の使い方
-
VBAで重複データを確認したい
-
Changeイベントでの複数セルの...
-
VBAのFind関数で結合セルを検索...
-
エクセル アクティブセルから...
-
文字列の結合を空白行まで実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報