• 締切済み

EXCEL VBA で VLOOKUP的な機能

お世話になります =VLOOKUP($G6,マスタ2!$A$2:$F$27,2,FALSE) で値を取得できる状況で それを$G6が変更されたイベントで値をセルにセットするようにしたいのですがどのようにすればいいでしょうか? 複数人でコピー&ペーストしたりするので セルに式を埋め込まずに実現したい事情があります。 よろしくお願いします。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! >VLOOKUP的な機能 とありますので、一例です。 画面左下のG6セルがChangeするSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペースト → Excel画面に戻り、G6セルのデータを色々変更してみてください。 尚、結果を表示させるセルは同じSheetのA2セルとした場合です。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim c As Range If Target.Address = "$G$6" Then Set c = Worksheets("マスタ2").Range("A:A").Find(what:=Target, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then Range("A2") = c.Offset(, 1) '←A2セルに表示 Else MsgBox "該当データなし" End If End If End Sub 'この行まで ※ コード内の「A2]部分は実際に表示させたいセル番地にしてください。m(_ _)m

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

No1に追記です。 >$G6が変更されたイベントで値をセルにセットするようにしたいのですがどのようにすれば 「G6」を変更するシートを右クリックしてコードの表示に以下のコードを貼り付けてください。 セルG6に値を入力すると結果がダイアログで表示されます。 ■VBAコード Private Sub Worksheet_Change(ByVal Target As Range) Dim 値 As Variant '見つからなかった場合エラーとなるのでエラー対策 On Error Resume Next '変更されたセルがG6以外なら終了 If Target.Address(False, False) <> "G6" Then Exit Sub 'Vlookupで値を取得 値 = WorksheetFunction.VLookup(Range("G6"), Sheets("マスタ2").Range("A2:F27"), 2, False) '値の有無を判定して結果表示 If Len(値) = 0 Then   MsgBox "見つかりませんでした" Else   MsgBox 値 End If End Sub

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

VBAであってもエクセルの関数は利用できます。 記述は以下のようになります。 WorksheetFunction.関数名(引数) (例) 合計 = WorksheetFunction.Sum(Range("A1:A3")) ですのでVlookup関数も以下のように利用できます。 (範囲A1:B3において、A4と一致する行のB列の値を取得する場合) 値 = WorksheetFunction.VLookup(Range("A4"), Range("A1:B3"), 2)

関連するQ&A

  • VLOOKUP関数の範囲の値が増えない方法

    VLOOKUP関数の範囲の指定で、 G2のセルの内容 =VLOOKUP(F2,TBL01!A2:C701,2,FALSE) と入っているセルを下方向にコピーすると G3 =VLOOKUP(F3,TBL01!A3:C702,2,FALSE) G4 =VLOOKUP(F4,TBL01!A4:C703,2,FALSE) といったようになります。ここで、 G3 =VLOOKUP(F3,TBL01!A2:C701,2,FALSE) G4 =VLOOKUP(F4,TBL01!A2:C701,2,FALSE) といった様に下方向にコピーしたいのです。 比較される値のF?は増えていく必要があります。 なにか良い方法はないでしょうか?

  • エクセルの計算式VLOOKUPを再度教えてください!

    再度,質問いたします、わかりましたら、教えてください。 エクセルの計算式でE1のセルに次の計算式があった時に =VLOOKUP(B1,$F$1:$G$10,2,FALSE)この式は、成り立っています。 「この時にもう1つ条件をつけて、A1のセルの値(20種類の値が、ある時)に対して範囲を変えることはできますか。たとえばA1セルが50という値のときは、$F$1:$G$10の範囲ですが、A1セルが130と言う値のときの範囲は$F$11:$G$15、A1が201のときの範囲は$F$16:$G$25を指定のように範囲を変えられますか?FとGに範囲が20種類タテにあります。H1からH10のセルは50という値、H11からH15のセルは130という値,H16からH25のセルは201と言う値があります。AからE列は1から1000のセルがあってE列は計算式をコピーします。」わかりましたら、計算式を書いてお教えください。

  • VLOOKUPでヘルプ!

    お世話になっています。 お恥ずかしながら、昨日初めてVLOOKUPを使用しました。 とりあえず使い方はヘルプを読んである程度理解しました。 そして上手い具合に値の参照はできたのですが・・・そのセルのコピー/貼付けが上手く行きません。 例えば下記のようになっていた場合、コピー/(1コ下のセルに)ペーストをすると 「=VLOOKUP(B7,シート2!B2:I125,6,FALSE)」をコピー  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 「=VLOOKUP(B8,シート2!B3:I126,6,FALSE)」が貼付け結果 と参照値まで加算されてしまいます。 ここで、参照値はそのまま、検索値のみを加算したいのです。 「=VLOOKUP(B7,シート2!B2:I125,6,FALSE)」  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 「=VLOOKUP(B8,シート2!B2:I125,6,FALSE)」 「=VLOOKUP(B9,シート2!B2:I125,6,FALSE)」 「=VLOOKUP(B10,シート2!B2:I125,6,FALSE)」  ・・・ となって欲しいのですが、どのようにすれば上手く貼り付けられますか? 「形式を選択して張り付け」でも思うようにいかず、応急処置としてテキストでバ~ッと打ち込んでいますが、面倒です・・・ 大体どのような作業かは想像がつくと思いますが、「VLOOKUPを使わない方が良い」等の意見もあるかも知れません。 その場合は補足致しますので、アドバイスよろしくお願いします。 尚、当方Excel97を使用しております。

  • vbaでvlookup

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

  • EXCELのVLOOKUPを有用に使いたいのですが

    すみません。どなたか教えてください。 たとえばA1のセルに以下の値があったとします。 <abc>1<abc> このうちの1の部分をA2のセルに表示したいときは=MID(A2,6,1)で表示できました。別のシート(仮にsheet2)に例えばA行に1から昇順に番号が振られていてB行にデータが入っていたとします。VLOOKUPを使ってsheet2のB行を表示したいときは=VLOOKUP(A2,Sheet2!A:B,2,FALSE)でできると思ったのですがエラー表示になってしまいました。A2のセルを更にコピーして例えばA3に形式を選択して貼り付けで値を選択して1を表示してから=VLOOKUP(A3,Sheet2!A:B,2,FALSE)をするとB行の値が表示されるのでA2は1とみなされてないということになるかと思うのですが、A2内で1とみなすようにできる関数はないでしょうか?

  • Excel2010 VLOOKUPのコピーでエラー

    Microsoft Office2010を使用しております。 マスタデータとなるシートを用意し、そちらに名前"donation_dnt_sets"とつけて、それに対してVLOOKUPを使用して値の取得を行いたいと思い =IF($J$4="","",VLOOKUP($J$4,donation_dnt_sets_v,3,FALSE)) という式を書きました。 その結果、正しい結果を取得することができたのですが、この式をコピーして同じシートの違うセルに貼りつけて実行したところ、N/Aエラーとなってしまいました。 貼りつけた式を確認したところ、コピー元の式と同じだったのでコピペミスという訳でもなさそうです。 しかも、貼りつけるセルをいくつか変えて実行したところ、N/Aエラーにならず、正しい値を取得することろもあったりします。。 原因の分かる方いらっしゃいましたら、ご教授のほどお願い致します。

  • エクセル Vlookup関数の入ったセルで関数を削除して値だけを残す方

    エクセル Vlookup関数の入ったセルで関数を削除して値だけを残す方法を教えてください。現在はコピーして、値のみをペーストしています。もっと簡単にできないでしょうか。

  • VLOOKUP関数 エクセル関数教えてください

    =IF(ISERROR(VLOOKUP(B2,$E$1:$F$296,2,FALSE)),"",VLOOKUP(B2,$E$1:$F$296,2,FALSE)) という関数を入れて、品番をセルに入力して元表から品名を導く表を作成しました。うまく使えています。 これを元に =IF(ISERROR(VLOOKUP(B2,$F$1:$I$1000,2,FALSE)),"",VLOOKUP(B2,$F$1:$I$1000,2,FALSE)) という関数に直して、同じような表を作ろうとしたのですが、うまくいきません。 何が悪いのか分かりません。 どうすればうまくいきますでしょうか?

  • エクセルの計算式を教えてください!

    誠に申し訳ありませんが、わかりましたら、教えてください。 エクセルの計算式でE1のセルに次の計算式があった時に =VLOOKUP(B1,$F$1:$G$10,2,FALSE)この式は、成り立っています。 「この時にもう1つ条件をつけて、A1のセルの値が1から20までの値に対して範囲を変えることはできますか。たとえばA1セルが1のときは、$F$1:$G$10ですが、A1セルが2のときの範囲は$F$11:$G$20、A1が3のときの範囲は$F$21:$G$30のように範囲はFとGと規則正しくタテ列に20種類あります、また、E列は1から1000のセルがあって計算式をコピー します。」わかりましたら、計算式を書いてお教えください。

  • エクセル「VLOOKUP」の使い方

    エクセル2000です 「名簿&住所録」シートを検索して、その人の電話番号を表示しようとしています。 例. =VLOOKUP("山田 太郎",'名簿&住所録'!F:M,7,FALSE) この"山田 太郎"の部分を、可変(セル「A1」や「A2」)に指定できないでしょうか? 例. =VLOOKUP(A1,'名簿&住所録'!F:M,7,FALSE) ヘルプを見ましたが分からなくて、、、

専門家に質問してみよう