• 締切済み

VLOOKUP関数をVBAで使用したい

VLOOKUP関数をVBAで使用したい 「検索」シートにID番号を入力すると、「データ」シートのA列に入っているデータから入力されたID番号を検索し、該当するID番号のある行の横並びに入っている別の列データ(B~AG列)を取り出し、それぞれを「検索」シートの様々なセルに表示するVBAを作っていますが、VBAでVLOOKUP関数を用いる方法がよく分からず苦戦しています。 「データ」シートの1、2行目は見出しで、検索されるデータが入っているのは3行目からです。また、「データ」シートには不定期に新しいデータが追加されていきます。 「検索」シートに検索結果を表示する際も、以下のように規則性のないセル配置なので少しややこしいです。 「検索」シートのセル=「データ」シートの列 B6=B列  B8=C列  B10=D列  B11=E列  B12=F列 B13=G列  B14=H列  B16=I列  D16=J列  F16=K列 B17=L列  D17=M列  F17=N列  B20=O列  C20=P列 E20=Q列  B21=R列  C21=S列  E21=T列  B22=U列 C22=V列  E22=W列  B23=X列  C23=Y列  E23=Z列 B24=AA列  C24=AB列  E24=AC列  B26=AD列 E26=AE列  B29=AF列  B31=AG列 このような動作をVBAでさせることは可能でしょうか? また、検索して該当するID番号がなかった際も、VBAだとそこで動作が止まってしまうので、「該当するID番号がありません」といったエラー判定が出るようにすることはできますか? 教えてください。よろしくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

みんなの回答

  • mimeu
  • ベストアンサー率49% (39/79)
回答No.3

> エラーは出ないものの動作もせず ??? 動作しないのなら、エラーが出ないワケはないのですが (^-^) VBAの編集画面で メニュー > デバッグ > VBAプロジェクトのコンパイル を実行してください プログラムとして形式的に間違っている部分を指摘してくれます > >Case ・・・ 以下省略 ・・・ > ここの部分をよく理解できていないかもしれません・・・。 ここは、その上の行を参考に "B8" ~ "B31" につき記述します もし Case 文をご存じなければ、参考書かヘルプをご覧くださいね > 参考画像を添付してみました 折角ですが、その画像は表示されていません VBAといえども作ったプログラムが一発で正解稼働することは まずありません 何度もデバッグしながら仕上げるものですよ 常套手段は随所に Debug.Print 変数名 で変数の値を表示させ ウマク行ってるか一行ずつ確認しながら進めます

marron_cream
質問者

お礼

お礼が遅くなって申し訳ありません。 試行錯誤の結果、無事に完成させることができました! ありがとうございました。

  • mimeu
  • ベストアンサー率49% (39/79)
回答No.2

> 上記コードのどの箇所を訂正すれば良いでしょうか?   キー = "B6" ' 実際は検索シートに入力された ID番号 の部分です

marron_cream
質問者

補足

ありがとうございます。 補足の回答を踏まえてコードを入力してみましたが、エラーは出ないものの動作もせず行き詰ってしまいました。 >Case ・・・ 以下省略 ・・・ ここの部分をよく理解できていないかもしれません・・・。 質問の説明が分かりづらかったかもしれないので、こういう動作をさせたいという参考画像を添付してみました。 画像の上が「データ」シートにデータが入っている状態で、下が「検索」シートで検索した結果です。実際はもっとたくさんの行と列があります。 (画像が大きすぎて添付した際に潰れ気味になってしまいました、見づらかったらすみません)

  • mimeu
  • ベストアンサー率49% (39/79)
回答No.1

こんな感じです Sub tes()   Dim 列 As Long, キー As String   キー = "B6" ' 実際は検索シートに入力された ID番号   Select Case キー   Case "B6" : 列 = 2   Case ・・・ 以下省略 ・・・   End Select   On Error Resume Next   Debug.Print Application.WorksheetFunction.VLookup(キー, Worksheets("データ").Range("A1:AG100"), 列, False)   If Err.Number = 1004 Then     Debug.Print "該当キーがない"     Err.Clear   End If End Sub

marron_cream
質問者

補足

詳しく書いてくださってありがとうございます! 今改めて書き忘れに気付いたのですが、「検索」シートで検索するID番号を入力するセルはB4です。この場合、上記コードのどの箇所を訂正すれば良いでしょうか? 確認漏れでお手数をお掛けして申し訳ありません・・・。

関連するQ&A