vlookup関数をマクロで行いたいと思っており、ネットで調べながらコードを書いております。
違うシート間でうまくいったコードをコピーし、変数等を直して実行してみたところ1004の実行時エラーが出てしまいます。
ソースシートをデータの範囲元とし、シート内にあるI8から始まるデータについて、vlookupをしたいのですが、vlookupプロパティの実行時にエラーが出ます。
範囲指定も検索値についても値が入っており、何が問題かわかりかねており困っております。
ソースシート = "KW_All"
'ソースシートの範囲定義
ソース上 = 8
ソース左 = 5
ソース右 = 5
ソース下 = Sheets(ソースシート).Range(Sheets(ソースシート).Cells(8, 5), Sheets(ソースシート).Cells(8, 5)).End(xlDown).Row
シート = "Keyword"
'keywordシートの範囲定義
上 = 3
左 = 1
右 = 9
下 = Worksheets(シート).Range(Worksheets(シート).Cells(上, 左), Worksheets(シート).Cells(上, 左)).End(xlDown).Row
keyword数 = 下 - 上 + 1
Set 範囲 = Sheets(ソースシート).Range(Sheets(ソースシート).Cells(ソース上, ソース左), Sheets(ソースシート).Cells(ソース下, ソース右))
For i = 1 To keyword数
検索値 = Sheets(シート).Range("I" & 上 + i - 1)
Range("J" & 上 + i - 1) = Application.WorksheetFunction.VLookup(検索値, 範囲, 1, False)
Next
どうぞご教授くださいますと幸いです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
NO1です。
Application.WorksheetFunction.VLookupの構文では検索値が見つからない場合、
このコードで実行エラーになりマクロは中断しますのでこれを回避する一例です。
wk = Application.VLookup(検索値, 範囲, 1, False)
If IsError(wk) then wk = "Not Found"
Range("J" & 上 + i - 1) = wk
No.2
- 回答日時:
もう一度、KeywordシートI3セル以降の値が、KW_ALLシートのE8以降にちゃんと存在するか確認してみてください。
存在が確認出来てもまだ1004エラーになるのでしたら、その時の検索値とセル範囲「範囲」の値を提示してみてください。
・検索値が存在しない時の処理を入れましょう。
・Vlookupの結果を貼り付けるシートが指定されて居ません。アクティブなシートに張り付くと思いますが良いのでしょうか。
No.1
- 回答日時:
検索値範囲の開始はI8から始まるのではないでしょうか、コード上はI3から開始
されているのでI3が空セル、検索範囲にないデータの為、エラーとなっています。
因みにコードはもっとシンプルにした方がよい、変数などを多用せずシンプルにした
方が良いと思います。
又、変数名称もコメント替わりにするつもりなら意味のある変数名称した方がよいと思います。
一例です。
ソース下 = Sheets(ソースシート).Range(Sheets(ソースシート).Cells(8, 5), Sheets(ソースシート).Cells(8, 5)).End(xlDown).Row
↓
範囲最終行 = Sheets(ソースシート).Range("E8").End(xlDown).Row
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
【エクセル】オプションボタン...
-
実行時エラー1004「Select メソ...
-
特定の文字を含むシートだけマ...
-
VBAで指定シート以外の選択
-
シートが保護されている状態で...
-
ExcelのVBAのマクロで他のシー...
-
【VBA】シート名に特定文字が入...
-
【Excel VBA】Worksheets().Act...
-
エクセルのマクロでアクティブ...
-
【VBA】指定した検索条件に一致...
-
【ExcelVBA】全シートのセルの...
-
XL:BeforeDoubleClickが動かない
-
Excel チェックボックスにチェ...
-
別のシートを参照して計算する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ExcelVBA シート名を複数セルか...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報