- 締切済み
エクセルで、他のファイルのデータ検索方法を教えて下さい。
カテゴリー違いでしたら、すいません。 エクセルで作成している、基礎となる1つのファイルデータを基に2つのファイルに一覧表があるので、その中の一致する情報を検索したいのですが、自力で考える限り三つ共ファイルを開き、それぞれ見やすいようにウィンドウサイズを調節してパソコン画面で一度に見れるようにし、検索したい 列(C・D欄とか…)指定して、「編集」⇒「検索」で手で入力してヒットすれば、該当データが一覧表を参考にして基になるファイルに入力すれば良いと考えたのですが、「検索」を手で入力しなくてもコピーして「検索する文字欄」の四角の中に入れたいのですが…無理なのでしょうか?? また、お教え頂く分際で恐縮ですが、他に別の良い方法もあれば、教えて下さい。宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- zenjee
- ベストアンサー率47% (50/106)
こういう質問をされるときは、もっと具体的にファイル名やセル参照(仮定でも結構)を示されるると分かりやすいし、答も出しやすいと思いますが、ご説明からすると多分次のようなことでしょうか。 まず前提条件として、基礎となるファイル名を仮に「基礎ファイル」とし、そのA列に部品番号、B列に部品名、C列から右に部品情報(仮にC列を規格、D列を部品単価とする。) があるとします。なお、各列の最上行は見出し行でデータが入った行は2行目以下とします。 次に一覧表ファイルが二つあるとして、ファイル名を一覧表A,一覧表Bとします。そして一覧表ファイルの列名も 基礎ファイルと同様にA~D列に 部品番号、部品名、規格、部品単価となっているとします。そして部品番号と部品名は必ずしもセットになっていない(つまり三つのファイル上で、部品名は同じだけど部品番号はファイルによって異なることもあり得るという意味。)とします。 このような条件で、一覧表ファイルA,Bに記載されている部品名が基礎ファイルに存在するかどうかを検索し、もし存在すれば基礎ファイルの規格、部品単価(C・D列)欄のデータを一覧表ファイル同様に書き換えるか、又はデータがなければ書き加えなければならない。また品名が存在しなければ基礎ファイルの従来のデータはそのままににして置く。それらの方法をどうするか、という質問だと理解していいのでしょうか。 であればそれを前提にしてお答えします。 1、まずVLOOLUPを関数を使う前に一覧表ファイルA,Bを統合したデータ一覧表を基礎ファイルの別シート(仮に「Sheet2」とします)に作ります。その方法は一覧表A,Bのデータをコピー&ペーストでもいいけど、できればSheet2の該当セルに「=[一覧表A]Sheet1!A2」(A2は相対参照。つまり$を付けない)のようにリンク貼り付けし、あと該当セルにプルダウンコピーした方がいいでしょう。(こうしておけば一覧表A,Bのデータが変わる都度Sheet2のデータが更新されるので便利だと思います。) ただし、2以下の作業をするときは、一覧表ファイルを必ずしもウインドウに現わす必要はありませんが、三つのファイルを開いて置くことは必要です。でないとリンクの結果が反映されませんから。 2、Sheet2の参照範囲に名前を付けます。 (1)Sheet2のB~D列を全選択し、挿入→名前→定義をクリックして、例えば「一覧表」と名前を付けます。そして名前の定義ダイアログボックスの参照範囲欄が「=Sheet2!$B:$D」となっていることを確かめます。 (2)Sheet2のB列を全選択し、同様に挿入→名前→定義をクリックして、例えば「品名」と名前を付けます。そして名前の定義ダイアログボックスの参照範囲欄が「=Sheet2!$B:$B」となっていることを確かめます。 3、次に基礎ファイル(Sheet1)に入力する計算式です。 基礎ファイルのC,D列には既にデータが入っている行もあるでしょうから、計算式をC、D列に設定する訳にはいきません。だからこの場合はE、F列に設けます。 E列のデータ入力最上行E2に設ける式は、 =IF(ISERROR(MATCH(品名,$B:$B,0)),IF(C2="","",C2),VLOOKUP($B2,一覧表,2,FALSE)) F2に設ける式は =IF(ISERROR(MATCH(品名,$B:$B,0)),IF(D2="","",D2),VLOOKUP($B2,一覧表,3,FALSE)) となります。あとE2,F2を下にコピーします。 IF、ISERROR及びMATCH関数を組み合わせたのは、エラー値(#N/A)が出ないようにするとともに、一覧表の品名が基礎ファイルになかった場合に、規格・単価の欄が空欄のときは空白に、データがあったときはそのデータを返すためです。 4、以上の作業が終わったら、基礎ファイルのE,F列を選択してコピー、C,D列を選択して右クリック→形式を選択して貼り付け→「値」にチェックしてOKで作業完了となります。
- konyanyachiwa
- ベストアンサー率63% (12/19)
こんばんは(=゜ω゜) お話を聞いた感じですと、neKo_deuxさんが仰ってるようにVLOOKUPを使うといいと思います。 まずは3つあるファイル(各1シート?)を1つのファイル(3シート)にまとめて、 出来るなら一覧表の2シートは1つのシートにマージしてしまえば楽になると思います。 一覧表に記載されている情報が一意のものだとして、 >基礎となるデータに情報を書き加えないといけないのです これも単純に一覧表から引っ張ってこれるならVLOOKUPで十分事足りると思います。 他にはVBAなどを使用してチェックしていく手段もありますが、作成は面倒だし汎用的にならないようなら作成する意味も無いと思います。。 あと、もし部品番号で検索出来るならそっちのほうがいいでしょう。 VLOOKUP等はExcelのヘルプにも載っていますので、neKo_deuxさんに紹介して頂いたサイトと併せてご覧になるとよろしいかと思います。 頑張ってください^^
- neKo_deux
- ベストアンサー率44% (5541/12319)
LOOKUP, VLOOKUP関数でできる事ではないでしょうか? 注文書にコードを入れると、商品名と単価が表示される例です。 @IT:Windows TIPS -- Tips:VLOOKUP関数でExcel帳票への自動入力を可能にする http://www.atmarkit.co.jp/fwin2k/win2ktips/317vlookup/vlookup.html
- konyanyachiwa
- ベストアンサー率63% (12/19)
こんにちは~ もうちょっと具体的な例とかを聞かせてもらってもいいですか? 基礎となるファイルデータってのと、該当データが一覧表を参考にして基になるファイルに入力すれば・・というあたりがちょっとわからなくて。。 >検索を手で入力しなくてもコピーして「検索する文字欄」の四角の中に入れたいのですが… これは出来ないことはないとは思いますが、エクセルっぽい使い方じゃなくなっちゃいますね。。 よろしくです!
補足
こんばんは! 答えてくれようとしてくれて有難うございます。 機械の部品リストで部品ごとに番号がついています。そして名前等の順でその一つの部品情報が一行ごとにずらりと記載しています。 部品といってもかなりいろんな種類があるし、その部品番号も7桁の数字だったり、名前が長かったりするのです。それが基本となるリスト。 その基本となるリストとは別に一覧表がありまして、その一覧表に記載されている情報を基礎となるリストの中にあるか、無いかも分からない代物で、もし一覧表に記載されている部品だった場合、基礎となるデータに情報を書き加えないといけないのです。そこで、別々のファイルでも共通する項目が部品番号と部品名なのですが、なにせ手で入力検索をかけると間違える元になってしまうので、検索をかける時にコピペできたら、ミスが少なくて済むかなと思って、質問させていただいたのですが、わかりますでしょうか??