• 締切済み

VBAにてVLOOKUPの検査値を変数で指定

VBAにてVLOOKUP(検査値、範囲、列番号、検索の型)を使用する時、検査値を変数として扱いたいのですが、どのような方法が良いのでしょうか。 セルに=VLOOKUP($D$3,名簿,2,0)と入力しD3を検査値とし名簿内より2にある社員番号を取り出しているのですが、これをVBAにて実施させ、セルには式ではなく社員番号を表示させたいのです。DATAとしてはD3から下にいくつか入力されているので、検査値を変数で扱う事によりD3以降全てのDATAを取り扱うようにしたいのです。 宜しくお願いします。

みんなの回答

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  下記サイトをご参照ください。   http://www.ne.jp/asahi/hishidama/home/tech/excel/workfunc.html   VBAからVlookupを呼び出せば良いと思います。ただし、実際に試していないので、「呼び出せない関数」かどうか分かりません。 では。

maytotama
質問者

補足

サイト紹介ありがとうございます。でも、なかなかこれでは解決しませんでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • vbaでvlookup

    エクセルのVBAについて。 指定した範囲の中から検索条件に一致したデータを検索し、取り出してくれる関数vlookup をVBAで実現したいのですが、 目標として、エクセルのセル(列)に、値を入力されているとします。 VBAを実行するボタンをクリックすると、、、 その値に対応する文字列(事前に用意)をその値の右のセルに自動で入力させたいです。 このVBAを作ることが目標です。 vbaでvlookupを実現でなくても、それよりも簡単な方法があれば教えていただきたいです。 お手数ですが、よろしくお願いします。

  • vbaにvlookupを組み込む

    お世話になります。 エクセルのマクロにvlookupを組み込みたいのですが,エラーが出てしまいます。 用意したものは「顧客名簿」というシートで,A列に顧客番号(6ケタの数字),B列に顧客名が入っています。C列以降はその他のデータが入っています。 「トップメニュー」というシートにあるマクロボタン「顧客抽出」を押すと,インプットボックスが現れます。これに顧客番号を入力すると,メッセージボックスが現れます。 この時のメッセージボックスに,インプットボックスに入力された番号により「顧客名簿」から顧客名を取り出し,「○○さんのデータを表示しますか」としたいのですが,ここでエラーが出ます。(○○は,「顧客名簿」のB列にある名前です) 実行時エラー 1004 WorksheetFunctionクラスのVLookupプロパティを取得できません。 組んであるマクロは以下の通りです。 Sub 顧客抽出() Dim ans As String, ans2 As String     ans = InputBox("顧客番号を入力", "入力", "")         If ans = "" Then             MsgBox "顧客番号が空白です" & vbNewLine & _                "処理を中止します", vbOKOnly         Else             If WorksheetFunction.CountIf(Worksheets("顧客名簿").Range("A1:B5000"), ans) = 0 Then                 MsgBox "顧客番号が登録されていません", vbOKOnly             Else                 ans2 = WorksheetFunction.VLookup(ans, Worksheets("顧客名簿").Range("A1:B5000"), 2, False)                 If MsgBox(ans2 & " さんのデータを表示しますか", vbYesNo) = vbYes Then                     Sheets("顧客情報").Select                     Range("D4").Value = ans                 Else                     MsgBox "処理を中止します", vbOKOnly                 End If             End If         End If End Sub 途中にある ans2 = WorksheetFunction.VLookup(ans, Worksheets("顧客名簿").Range("A1:B5000"), 2, False) の部分でエラーが出るのですが,解決策が見当たりません。 おそらくRange("A1:B5000")の部分に不具合があると思うのですが,どう対処すればいいでしょうか。 詳しい方,ご教授願います。

  • 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番号がありません」といったエラー判定が出るようにすることはできますか? 教えてください。よろしくお願いします。

  • VLOOKUPの列番号について

    VLOOKUPを使っていて、疑問に思ったことがありました。 わかる方がいれば、是非教えてください。 なぜ、列番号はセル参照ではいけないのでしょうか? VLOOKUP(検索値, 範囲, 列番号, 検索の型) ヘルプを確認したところ、以下のようなものでした。 【列番号 範囲 内で目的のデータが入力されている列を、左端からの列数で指定します。列番号 に 1 を指定すると、範囲 の左端の列の値が返され、列番号 に 2 を指定すると、範囲 の左から 2 列目の値が返されます 】と、言っていることは理解できるのですが、範囲内といってもセルに番地はあるわけで、それを使っても良いのでは・・・? なぜ、セルの番地ではなく「1列目」なんでしょうか? 説明の足りない文章で大変申し訳ないのですが、何卒よろしくお願いします。

  • Excel VLOOKUPをVBAでやりたいのですが、分からなくて困っ

    Excel VLOOKUPをVBAでやりたいのですが、分からなくて困ってます。 Sheet1のC列2行目行こうにSheet2のI列のデータを取得し (A列にデーターが入っている分、(時と場合により表示数が違う為)) なおかつ Sheet1のD列2行目以降にB-Cの差し引きをおこなう 以上のことをSheet1をアクティブにした時VBAでおこなうには、? 教えて下さい。宜しくお願い致します。

  • Vlookupの応用?

    通常、VLOOKUPを使い、検索する場合は、 =VLOOKUP(検索値,範囲,列位置,検索の型)となると思います。 このうち、検索値と範囲(の左端)、列位置をどこかのセルから取得するにはどのようにすればよいでしょうか? たとえば、 A1セルには1と入力(A列を参照)、B1セルには2と入力(B列を参照)、C1セルには3と入力すると、 A3セル=VLOOKUP(A3,B:Z,3,false) となるようにしたいのですが、どのようにすればよいでしょうか。 お願いします。

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  • VBAの変数の型について

    VBAの変数の型について VBA初心者です。 下記のようにして背景に色を付けようと思ったのですが、 文字列型の変数名では、型が違うとエラーが出ます。 ただ、事情により、文字列型でしか色情報を取得できないため、 VBA内部で型の変更をして、上手く処理出来ないかと考えています。 文字列型から色名に対応する型への変更は、出来るのでしょうか? --------------------------------------- .BackgroundPatternColor = 文字列型変数名 --------------------------------------- 現在は、諦めて、下記のようにして対応しています。 --------------------------------------- If (bgColor = "黄") Then .BackgroundPatternColor = wdColorYellow End If --------------------------------------- よろしくお願い致します。

  • VBA VLOOKUP 検査値が数値だと#N/Aになってしまう

    VBAでVLOOKUPをセルに表示させるようにしましたが、検査値が数値になると#N/Aになってしまいます。 IFと組み合わせて検索セルがブランクのときは空白、そうでないときはVLOOKUP数式をもともと1000行くらい埋め込めばいいのかもしれませんがそうすると1000行を超えたらどうする?など柔軟性がいまいちなので、行数が変わっても対応できるようVBAでLOOPにしようと思いました。 アクティブシートのA列の値をシート「マスタ」のA列から探してきて、「マスタ」のB列の内容をアクティブシートのB列に表示させたいです。 最終行 = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row j = 2 Do Until j = 最終行 + 1  Cells(j, 2).Select  Selection.Formula = "=Vlookup(""" & Cells(j, 1) & """,マスタ!A:B,2,false)"  j = j + 1 Loop 検索が数値の場合、#N/Aになります。 数値でも文字列でもvlookupで拾えるようにするにはどのようにしたらよいでしょうか。

  • excel vlookup関数で

    とあるセル(例えばH2)に、別シートのデータの名前か顧客番号を入力すると、E4セルに名前、E6セルに顧客番号が表示されるようにしたいのですが、過去ログを見てもどうにもやり方がわかりません。 vlookupでデータの左端の列にある顧客番号を入力して表示させるだけなら当然できるんですが、2列目にある名前を入力した時も表示させる事は可能でしょうか。 回答よろしくおねがいします。

専門家に質問してみよう