• 締切済み

エクセルVBAで行うVLOOKUPについて

エクセル2000を使用しています。 いまいろいろVBAを使用してますが、わからないことがあります。 シート1に入力データ、シート2に参照のデータ USERFORM を使用し たとえばテキストBOX1にコードAと入れるとテキストBOX2に東京支店と表示し確認をできるようにしたいのです。東京支店は、シート2の参照データから引用してきます。 BOX1にAと入れてエンターを押した時点でVLOOKUPを実施させたいのですがいまいちわかりません。 シート2は A列にコード A,B,C,D,.... B列に東京支店、千葉支店... よろしくお願いいたします

  • a32
  • お礼率6% (7/109)

みんなの回答

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.3

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) イベントをつかうとTextBox1のフォーカスを失うと実行します。 VlookUpについては他の回答者さんの回答でいいかと。

  • big_fool
  • ベストアンサー率22% (43/193)
回答No.2

一番簡単なのはあるシートのあるセルにVlookup関数を入力しておき検索値セルにTextBox1の値を挿入しその戻り値をTextBox2に表示する 「コマンドボタン」をイベントとして そのコードに Private Sub CommandButton1_Click() Worksheets("シート名").Range("セル番地") = TextBox1.Text TextBox2.Text = Worksheets("シート名").Range("セル番地").Value End Sub こんな感じでは 又TextBox1の値を配列の定数に代入しFor NextでSheet2のA列を検索し一致した隣のセル(B列)をTextBox2に表示する方法があると思います

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

Application.WorksheetFunction.VLookup を使って下さい。 Applicationは省略できます。

関連するQ&A

  • エクセルのVLOOKUP関数について

    エクセルのシート(1)に組合員コード(7桁),氏名,商品,数量・・・が入力してあって、列を挿入し、その組合員コードの左3桁を表示するLEFTの文字列関数を入力します。 それによって3桁が表示され、その3桁のコードは、支店コードを意味するので、シート(2)に支店コード、支店名が入力してあるのでそこから参照するようにシート(1)の3桁が表示されている隣に新たに列を挿入し、シート(2)の支店コードから支店名を引き出すようにVLOOKUP関数を入力したら、「N#A」という表示が出て支店名が表示されません。 LEFT関数によって表示された文字列だと「N#A」で支店名が表示されないのですが、自分で3桁の数字を入力すると支店名が表示されます。 3桁の文字列の結果の値だけをコピーしても、「N#A」が表示され、支店名が表示されません。 文字列関数によって表示された結果から、VLOOKUPで参照は出来ないのでしょうか? 1つずつ自分で数字を入力するしかないのでしょうか? 他に何か別の方法でも構いませんので、教えていただけないでしょうか?

  • Excel VBA 別ブックを開かずに転記

    Excel2007のユーザーフォームについて教えてください。 ユーザーフォームを以下のように作成しました。 ■テキストボックス6つ テキストボックス2→件名 テキストボックス3→数 テキストボックス4→名前 テキストボックス5→備考1 テキストボックス6→備考2 ■コマンドボタンが1と3の2つです。 コマンドボタン1→転記と印刷 コマンドボタン3→終了 ■シートの構成  sheet"作成と一覧"   1行目を以下の項目で使用しています。  A1→番号(テキストボックス1を表示)  B1→件名(テキストボックス2を表示)  C1→数(テキストボックス3を表示)  sheet"印刷"  A1→番号(テキストボックス1を表示)  A2→件名(テキストボックス2を表示)  B2→数(テキストボックス3を表示)  A3→名前(テキストボックス4を表示)  A4→備考1(テキストボックス5を表示)  A5→備考2(テキストボックス6を表示) テキストボックスに入力した値を2つのシートにそれぞれ転記して、 シート"印刷"を2部印刷しています。 ここまで以下のコードで行いました。 Private Sub CommandButton1_Click() '入力値を作成と一覧シートに転記 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列) = UserForm1.TextBox1.Value Cells(行, 列 + 1) = UserForm1.TextBox2.Value Cells(行, 列 + 2) = UserForm1.TextBox3.Value '入力値を印刷シートにに転記 Worksheets("印刷").Range("A1") = UserForm1.TextBox1.Value Worksheets("印刷").Range("A2") = UserForm1.TextBox2.Value Worksheets("印刷").Range("B2") = UserForm1.TextBox3.Value Worksheets("印刷").Range("A3") = UserForm1.TextBox4.Value Worksheets("印刷").Range("A4") = UserForm1.TextBox5.Value Worksheets("印刷").Range("A5") = UserForm1.TextBox6.Value 部数 = 2 Worksheets("印刷").PrintOut Copies:=部数, Collate:=True UserForm1.TextBox1.SetFocus Cells(行 + 1, 列).Select End Sub Private Sub CommandButton3_Click() '終了ボタンで値をクリアしてウィンドウを閉じる Dim Ctrl As Control For Each Ctrl In Controls If TypeName(Ctrl) = "TextBox" Then _ Ctrl.Value = "" Next Ctrl Unload Me End Sub 教えて頂きたい事なのですが・・・ コマンドボタン1の入力値を作成と一覧シートに転記の所なのですが、 アクティブセルではなく、常にA列の最後の値の次の空白行に転記するようにしたい場合、 どのように書き換えればいいのでしょうか? もう一点ですが、 別ブックにテキストボックス1から6が入力された一覧があります。 この別ブックを開かずに、 テキストボックス1に入力された番号を探して、 テキストボックス2から6に表示されるようにしたいのです。 うまく説明できないのですが・・・ 別ブックの名前は"たちつ" 別ブックは、あいうサーバーの かきくフォルダの中のさしすフォルダです。 ブック"たちつ"に"一覧"というシートがあります。 一覧のシートのD列の3行目以降には番号が入力されており、日々増えています。 テキストボックス1に入力された番号を、 一覧のD列から探し、 I列の値をテキストボックス2へ K列の値をテキストボックス3へ L列の値をテキストボックス4へ M列の値をテキストボックス5へ J列の値をテキストボックス6へ転記させたいのです。 同じブックの別シートを参照するときには Application.VLookupで出来たのですが、 マクロの記録でやってみても、解決できませんでした。 コードをご覧いただいてお分かりの通り、 VBA超初心者です。 ネットを見ながら試行錯誤している状況です。 コードの間違い等あるかもしれませんが、 ご教示よろしくお願いいたします。

  • エクセルVBA VLOOKUPについて

    エクセル VBA初心者です。 関数でのVLOOKUPをVBAで作りたいのですが、上手くいきません。 あらかじめ、Sheet2の1から300行までに A列  / B列 商品名 / 商品コード が入力されています。(名前の定義=商品コード) Sheet1にユーザーフォームを利用して、データを書き込んだ後、 B列に商品名が書き込まれると、 A列に商品コードが表示されるようにしたいと考えています。 A列に =IF(B2="","",VLOOKUP(B2,商品コード,2,FALSE)) と入力していたのですが、 VBAでIfを使って出来ないかと考えてみたのですが、 上手くいきませんでした。 Private Sub Worksheet_Change(ByVal Target As Range) Dim sRow As Long Dim sColumn As Long sRow = ActiveCell.Row sColumn = ActiveCell.Column If Cells(sRow, 2).Value = True Then Cells(sRow, 1).Value = WorksheetFunction.VLookup(Cells(sRow2).Value, Worksheets("Sheet2").Range("A1:B300"), 2, False) ElseIf Cells(sRow, 2).Value = " " Then Cells(sRow, 1).Value = " " End If End Sub ご教授いただけないでしょうか? エクセル2003 WindowsXP

  • エクセルのVLOOKUPについて

    ご覧いただきありがとうございます。 下記の画像のような場合のVLOOKUPの使い方について教えて下さい。 【Sheet1】A列に【Sheet2】A列の文字が含まれていた場合に、【Sheet1】B列に【Sheet2】B列の数を入力するようにしたいと思っております。 【Sheet1】A列の文字数が少なく(列:◯◯)、【Sheet2】A列の文字数が多い場合(列:東京都立◯◯高等学校)は、 =IF(COUNTIF(Sheet2!$A$1:$A$6,"*"&A1&"*")=0,"",VLOOKUP("*"&A1&"*",Sheet2!$A$1:$B$6,2,0)) を入力したら出来たのですが、下記の画像のように、【Sheet1】A列の文字数の方が多い場合は、どのようにすればよいのでしょうか? 使用しているのはエクセル2010です。 ご回答宜しくお願い致します。

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

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

  • エクセルでの計算式について

    まず、(1)のシートには支店コード・店コード・店名…等の一覧リスト があります。 (2)のシートにおいて、支店毎に表を作成し、B列に店コードを入力する と自動的にC列に店名がD列に実績がというようにしたいのですが、 どのようにすれば宜しいでしょうか。 私の考えだと まず、(2)のシートでA支店コードを入力すると(1)のシートでA支店の範囲を 選択、店コードを入力するとVLOOKUP関数 【VLOOKUP(B8,データ!$D$2:$W$3433,2,1)】で必要項目抽出。 っといった形が出来れば良いのかな…と思いながらわからないのです。 ※同じ店コードがいくつもあるので、先に支店毎に選択しなくてはならず。 (フィルタは使用しません。) 自分で考えた結果はこんな感じでしたが、良い案をご存知の方教えて 頂けないでしょうか。 よろしくお願い致します。

  • 複数のシートに跨ってVLOOKUPするには?

    複数のシートに跨っているデータをVLOOKUPで参照しようとしています。 1つめのシートには コード番号 シート名 の2つのカラムがあり、コード番号ごとに どのシートを参照すればよいかわかるようになっています。 参照されるほうのシートには コード番号 値 の2つのカラムがあります。 このシートが数十存在しますが、1つのシートにまとめることは出来ません。 1つ目のシート上で、 =VLOOKUP(A1,CONCATENATE(B1,"!A:B"),2,false) などと試してみたのですが、うまくいかないようです。 何か良い方法はないでしょうか。

  • ExcelのVLOOKUP関数の動作をMySQLでやる方法ありますか?

    ExcelのVLOOKUP関数の動作をMySQLで やりたいのですが、方法はあるのでしょうか? たとえばExcelでは Sheet1に顧客情報 A列      B列  C列 利用者コード  名前 電話番号 AAA      田中 03-0000-0000 BBB      佐藤 03-0001-0001 CCC      山口 03-0002-0002 Sheet2に利用履歴 A列 B列      C列 No. 利用者コード 名前 1  AAA  =VLOOKUP(B2,Sheet1!A:C,2,0) 2  CCC  =VLOOKUP(B3,Sheet1!A:C,2,0) 3  AAA  =VLOOKUP(B4,Sheet1!A:C,2,0) 4  BBB  =VLOOKUP(B5,Sheet1!A:C,2,0) 5  CCC  =VLOOKUP(B6,Sheet1!A:C,2,0) ExcelではSheet2を上記のようにすれば 利用者コードからSheet1のB列に入力されて いる名前を参照できますよね。 MySQLのテーブルは テーブル1はSheet1と同じ テーブル2はNo. 利用者コードだけで名前はありません。 Sheet2のような出力結果・参照方法を MySQLでやる方法はありますか? SELECT文で出力できるのならベストですが その他の方法がありましたらそちらの 方法も教えていただきたいです。 やはりMySQLのレコードをCSV形式か何かで出力して Excelで処理したほうがいいんでしょうか? どなたかご教授願います。

    • ベストアンサー
    • MySQL
  • VBAで別ブックからVLOOKUPで抽出

    ブックBシート1A列の値にマッチする値をそれぞれの列にVLOOKUPでブックAシート1にある値から貼り付けたいのですがVBAコードが解る方宜しくお願いします。尚、データーが50行ぐらいあるのですが。

  • VLOOKUPでお願いします

    VLOOKUPは初めてです。 (シートA)     A       B     C  1  コードNO.   名前   電話番号 2  0011112    佐藤   1111-3333 3  0022222    鈴木   1234-5544 4  1155444    山田   5566-1133 5  0333777    山下   8877-4477 (シートB)     A       B     C  1  コードNO.   名前   電話番号 2  0022222     3  0333777    シートAが元データです。 シートBのA列に他からコピーしたコードNO.を貼り付けると自動的に シートAからに該当する名前と電話番号をシートBのB列C列に表示させる。 どうか宜しくお願いいたします。

専門家に質問してみよう