dポイントプレゼントキャンペーン実施中!

エクセル2007を使用しています。
まずエクセルで作られたデータベースがあります。データベースには、管理番号、顧客名、商品の管理番号、商品名、価格が入っています。
このデータベースとは別に、検索(抽出)用のエクセルを用意しています。
そこで、管理番号を入れたら、顧客名、商品名、価格のみが1行(横)に表示されるようにしたいです。
クエリを利用してやると一つずつ顧客名、商品名、価格を選んで…という風に時間がかかります。
例えば、管理番号の列(縦)に番号を入れて、ボタンを押すとか、実行(F9)すれば、管理番号を入れたすべての行に、データベースから検索した顧客名、商品名、価格が入力されるようにしたいのです。(管理番号の重複はありません)

クエリで一個ずつ選んでいくのをマクロ登録するしかないのでしょうか?

A 回答 (2件)

>データベースには、管理番号、顧客名、商品の管理番号、商品名、価格が入っています。



データベースのABCDE列に管理番号から価格までが入っているとする。
c:\testフォルダのDB.xlsxブックのSheet1にそれがあるとする。

検索のエクセルでは
A2に管理番号を記入すると
B2に
=IFERROR(VLOOKUP($A2,'c:\test\[db.xlsx]sheet1'!$A:$E,COLUMN(),FALSE),"")
と記入し,E2までコピーしておく。

必要に応じてA3以下にも管理番号を記入することにして,B2以下のセルにも式をコピーして備えておく。
    • good
    • 0
この回答へのお礼

VLOOKUPで他のフォルダに入ってるエクセルのデータを読み込めるとは思ってませんでした。
ありがとうございます。
上手く作る事が出来ました。

お礼日時:2011/06/21 21:45

データベースのファイルと抽出用のファイルが別ということですよね。


データベースのエクセルファイルが編集中であっても抽出できるデータは
ハードディスクに保存された状態データしか抽出はできません。

仮に
1、データをすべて、抽出用のファイルにコピーするマクロを作成する。
2、エクセルファイルへデータベースの接続の設定をする。
3、抽出用のファイルに =データベース!A1 といったリンクする関数をコピーする。
といった方法で、元データをすべて、抽出用のファイルに取り込みます。
抽出のシートには Vlookup関数を使えば希望の結果が表示されるはずです。

いずれにしても、元のデータベースが編集を終わって、上書き保存された状態の
データしか対象にならないので、そのタイミングでデータを読み込めば十分と
いうことになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!