- 締切済み
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番号がありません」といったエラー判定が出るようにすることはできますか? 教えてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mimeu
- ベストアンサー率49% (39/79)
> エラーは出ないものの動作もせず ??? 動作しないのなら、エラーが出ないワケはないのですが (^-^) VBAの編集画面で メニュー > デバッグ > VBAプロジェクトのコンパイル を実行してください プログラムとして形式的に間違っている部分を指摘してくれます > >Case ・・・ 以下省略 ・・・ > ここの部分をよく理解できていないかもしれません・・・。 ここは、その上の行を参考に "B8" ~ "B31" につき記述します もし Case 文をご存じなければ、参考書かヘルプをご覧くださいね > 参考画像を添付してみました 折角ですが、その画像は表示されていません VBAといえども作ったプログラムが一発で正解稼働することは まずありません 何度もデバッグしながら仕上げるものですよ 常套手段は随所に Debug.Print 変数名 で変数の値を表示させ ウマク行ってるか一行ずつ確認しながら進めます
- mimeu
- ベストアンサー率49% (39/79)
> 上記コードのどの箇所を訂正すれば良いでしょうか? キー = "B6" ' 実際は検索シートに入力された ID番号 の部分です
補足
ありがとうございます。 補足の回答を踏まえてコードを入力してみましたが、エラーは出ないものの動作もせず行き詰ってしまいました。 >Case ・・・ 以下省略 ・・・ ここの部分をよく理解できていないかもしれません・・・。 質問の説明が分かりづらかったかもしれないので、こういう動作をさせたいという参考画像を添付してみました。 画像の上が「データ」シートにデータが入っている状態で、下が「検索」シートで検索した結果です。実際はもっとたくさんの行と列があります。 (画像が大きすぎて添付した際に潰れ気味になってしまいました、見づらかったらすみません)
- mimeu
- ベストアンサー率49% (39/79)
こんな感じです 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
補足
詳しく書いてくださってありがとうございます! 今改めて書き忘れに気付いたのですが、「検索」シートで検索するID番号を入力するセルはB4です。この場合、上記コードのどの箇所を訂正すれば良いでしょうか? 確認漏れでお手数をお掛けして申し訳ありません・・・。
お礼
お礼が遅くなって申し訳ありません。 試行錯誤の結果、無事に完成させることができました! ありがとうございました。