- ベストアンサー
データのマッチング方法について
2つのデータのマッチング方法について教えて下さい。 ここに、 1.ある製品の型番名 2.その型番の構成部品リスト という2つのリストがあります。 (リストはそれぞれ縦にデータが並んでいます。1は型番名が1列で縦に並んでいます。2は2列構成で、左に型番名、右に構成部品名が入った形式です) この2つをマッチングさせて、 ・リストの左端に型番名 ・その右横に構成部品を順に表示させる (複数あるので、その際はどんどん右にリストを伸ばしていきます) というリストを作りたいと思っています。 イメージとしましては、 型番 構成部品1 構成部品2 構成部品3 A A1 A2 A3 B B1 B2 のような感じです。 データ自体はAccessとExcelでそれぞれ持っていますので、どちらでも使用できると思います。(バージョンは2000です) 上手く説明できなくて申し訳ありませんが、『このアプリのこんな機能を使えばできるよ!』というアドバイスを頂ければ嬉しいです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Excelで、VLOOKUP関数を使う方法があります。 ちょっと手間はかかりますが・・ 構成部品リストの構成部品に、型番名毎に連番を付け、型番名と連番を使ってVLOOKUP関数で表を作成する方法です。 型番名リストがワークシート「Sheet1」のA列に、 構成部品リストがワークシート「Sheet2」のA列とB列にあるとして、 (いずれも1行目は項目名で2行目からデータとして) (1)「Sheet2」のA列の前に1列挿入する。 (A列は空白、構成部品リストがB・C列になる。) (2)「Sheet2」の構成部品リストを、「型番名」で並べ替えをする。 (3)A1のセルに「検索値」、D1のセルに「連番」と入力。 (4)D2のセルに「=IF(A2=A1,C1+1,1)」と入力。 (5)D2のセルを、オートフィルでリストの最終行までコピー。 (6)A2のセルに「=B2&D2」と入力。 (7)A2のセルを、オートフィルでリストの最終行までコピー。 これで、VLOOKUP関数で検索するための値ができます。 なお、連番の最大値も調べておいてください。(以下では、最大値=5と仮定します。) (8)「Sheet1」の型番号リストの横、B1のセルに「1」と入力。 (9)B1のセルを、F1のセル(連番の最大値になる)まで横方向にオートフィル(連続データ)。 (B1からF1のセルには「1」「2」「3」「4」「5」が入力される。) (10)B2のセルに「=IF(ISERROR(VLOOKUP($A2&B$1,Sheet2!$A$1:$C$●,3,FALSE)),"",VLOOKUP($A2&B$1,Sheet2!$A$1:$C$●,3,FALSE))」と入力。 (●は、構成部品リストの最終行の行数です。) なお、エラー表示を気にしなければ「=VLOOKUP($A2&B$1,Sheet2!$A$1:$C$●,3,FALSE)」でも良いです。 (11)B2のセルをF2のセル((9)で入力した列)まで横方向にオートフィルでコピー。 (12)B2からF2のセル((11)のセル)を、オートフィルで型番号リストの最終行までコピー。 以上で、ご希望の内容の表が完成すると思います。 このままだと、ワークシート関数なのでデータとして使い辛いですが、関数を消したい場合は (13)「Sheet1」全体を選択・コピーし、そのまま「形式を選択して貼付」で値を貼り付ければ関数が消えます。 文章にするとややこしいですが、やってることは単純です。
その他の回答 (1)
- O_cyan
- ベストアンサー率59% (745/1260)
Accessで二つのテーブルを作ればクエリで簡単にイメージと同様のリストを作成 できます。 型番名同士をリレーションし必要なフィールドだけ追加すれば良いので使い勝手 も良いし余分な記述をする事もなく楽です。 ExcelよりAccessの方がその後の拡張性もあると思いますのでAccessが良いのでは と思います。
お礼
お礼遅くなり申し訳ありません。 成るほど Accessですか・・・。 非常に便利そうですので、これから頑張って勉強してみます。 ありがとうございました。
お礼
お礼遅くなり申し訳ありません。 使い慣れてるExcelで早速試してみます。 成るほど、VLOOKUPでこういう使い方もあるんですね。 いろいろ研究してみます!!