• ベストアンサー

エクセルで名寄せとマッチング

Excel 2003です。 関数やメニューにある機能でできると、とても助かります。 2つのシートの情報を統合して、1つのシートにしたいのですが、方法が分からず途方にくれています。どうぞお知恵をお貸しください!!! --- 【GOAL】2つのシートを、「アイテムID」をキーに、マッチング。 1. <シート2>を名寄せして、1アイテム=1行のデータにする 2. <シート1>と、名寄せした<シート2>を、「アイテムID」をキーにマッチングし、<シート1>と<シート2>の情報を、全て1つのシートに統合。 --- ▼具体的には、以下のようなデータです。 <シート1> 23,000件ほどのアイテム名リスト ・アイテムはユニークで、重複なしです 【例】 アイテム名,アイテムID いろは,1111 にほへと,2222 ちるぬ,3333 るを,4444 <シート2> 30,000件ほどのアイテムカテゴリー分け表 ・アイテムによって、割り当てられているカテゴリ数が異なる。 ・「1行=1アイテム1カテゴリ」で、1アイテムにつき、割り当てられたカテゴリ数分だけ行が発生している。 【例】 アイテムID,カテゴリ名,カテゴリID 1111,エンタメ,aaaa 2222,ビジネス,bbbb 3333,エンタメ,aaaa 3333,趣味,cccc 4444,エンタメ,aaaa --- ▼したいこと。 1. まず、<シート2>を名寄せ。1アイテム=1行のデータにする。 【結果】 1111,エンタメ,aaaa 2222,ビジネス,bbbb 3333,エンタメ,aaaa,趣味,cccc 4444,エンタメ,aaaa 2. アイテムIDで、<シート1>と<シート2>をマッチング 【結果】 いろは,1111,エンタメ,aaaa にほへと,2222,ビジネス,bbbb ちるぬ,3333,エンタメ,aaaa,趣味,cccc るを,4444,エンタメ,aaaa 以上です! --- エクセルしかない環境で、困っています。どうぞよろしくお願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

関数式を組み合わせてやる方法もありますが以下の方法が簡単だと思います。 シート2を別シートにコピーして、A列(アイテム名)を挿入します。コピーしたシートのA2セルの式は以下になります。 =IF(ISNA(MATCH(B2,Sheet1!B1:B24000,0)),"",INDEX(Sheet1!A1:A24000,MATCH(B2,Sheet1!B1:B24000,0))) A2セルをデータ行数分だけコピーします。これでアイテム名がつきました。 重複行を取り除くにはフィルタオプションを使用します。B列(アイテムID)を選択して 「データ」→「フィルタ」→「フィルタオプションの設定」を選択します。「リストまたは選択範囲の…」というメッセージが出たら「OK」でかまいません 「抽出先」は「選択範囲内」を選択し、「重複するレコードは無視する」にチェックして「OK」で重複がないリストになります。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

#02です。訂正です。回答中の式は以下に差し替えてください =IF(ISNA(MATCH(B2,Sheet1!B$1:B$24000,0)),"",INDEX(Sheet1!A$1:A$24000,MATCH(B2,Sheet1!B$1:B$24000,0)))

chihirok
質問者

お礼

ありがとうございました。 <シート2>の名寄せ(行の再構成)は、IF関数でアイテムID(Bの列)をキーに、とにかく同じ行の横の列へチマチマともってくることで対応しました。 =IF(B2=B3,C3,""),=IF(B2=B4,C4,""),=IF(B2=B5,C5,"") ↑コレを延々と、振り分けられている最大カテゴリ数分だけ横に展開。 <シート1>と<シート2>のマッチングは、これもチマチマとVLOOKUPで、値を移しました。 みなさま、本当にありがとうございました。

chihirok
質問者

補足

ありがとうございます! シート2の重複データは、除いてしまわず 名寄せして、情報は引き継ぎたいのです。。 アイテムID,カテゴリ名,カテゴリID 1111,エンタメ,aaaa 2222,ビジネス,bbbb 3333,エンタメ,aaaa 3333,趣味,cccc 4444,エンタメ,aaaa ↓ × アイテムID,カテゴリ名,カテゴリID 1111,エンタメ,aaaa 2222,ビジネス,bbbb 3333,エンタメ,aaaa 4444,エンタメ,aaaa  ↓  ○ アイテムID,カテゴリ名,カテゴリID 1111,エンタメ,aaaa 2222,ビジネス,bbbb 3333,エンタメ,aaaa,趣味,cccc 4444,エンタメ,aaaa この名寄せがやっかいで・・困り果てています。 どうぞ宜しくお願いします!

回答No.1

以下のような方法はいかがでしょうか? <シート2> 例のデータがA1:C5に入っているものとします。 D1に以下の式を入力してD5までフィルコピー =COUNTIF(A$1:A1,A1)+10*A1 <シート1> 例のデータがA1:B4に入っているものとします。 C1に以下の式を入力してC4までフィルコピー =IF(COUNTIF(シート2!$A$1:$A$5,$B1)<(COLUMN()-1)/2,"",INDEX(シート2!$B$1:$B$5,MATCH($B1*10+(COLUMN()-1)/2,シート2!$D$1:$D$5,0))) D1に以下の式を入力してD4までフィルコピー =IF(C1="","",VLOOKUP(C1,シート2!$B$1:$C$5,2,0)) C1:D4を選択して必要なだけ右にフィルコピー あとは全体をコピー-形式を選択して貼り付け-値とするなどして取り出してください。 カテゴリ数が10を超える場合は修正が必要になります(式中の*10を*100などにする)。

chihirok
質問者

補足

ありがとうございます!! 試してみているのですが、うまくいきません・・。 COLUMN()の範囲指定はしないでこのままでよいでしょうか?

関連するQ&A

  • グループ単位で空白行を挿入するVB

    下記の様に番号順にまとまったデータがある場合に その番号が違う番号になった時に空白行を1行挿入したいのですが 良い方法があればご教授下さい。 お願い致します。 <<例>> (実行前)  番号 DATA1 DATA2 1  1  aaaa bbbb 2  1  aaaa cccc 3  2  bbbb bbbb 4  3  cccc bbbb (実行後) 1  1  aaaa bbbb 2  1  aaaa cccc 3  2  bbbb bbbb 4  3  cccc bbbb 以上です。

  • SQLでの集計

    下記の様に、「複数のitemを買っているuserと購入されたitem」のテーブルと、 user item ---------------------------------- 田中 AAAA 田中 CCCC 田中 EEEE 北野 DDDD 北野 BBBB 北野 AAAA 小堺 CCCC 小堺 EEEE 松本 EEEE 松本 KKKK 松本 CCCC 松本 DDDD 浜田 BBBB 浜田 DDDD 下記の様な IDに紐付いた 「item」のテーブルから、 ID  item ---------------------------------- 1   AAAA 2   BBBB 3   CCCC 4   DDDD 5   EEEE 下記の様に各itemと各itemを買った場合に一緒に買われるitemの一覧を結果 として表示させたいのですが、クエリの作り方が思い浮かばず、困っています。 ※)可能であれば、買われたitemを表示する際にはbuy1から(左側から)同時購入 回数の多いitemを重複せずに並べて表示したい ID  item  buy1  buy3  buy4  buy5  buy6・・・・ ---------------------------------- 1  AAAA CCCC BBBB DDDD EEEE 2  BBBB DDDD AAAA 3  CCCC AAAA EEEE DDDD KKKKK 4  DDDD AAAA BBBB CCCC EEEE 5  EEEE AAAA CCCC KKKKK 尚、IDと紐付いているitem数は決まっていますが、買われるitemの種類は上記 の様にIDが1~5だけではなく、集計してみないと判らない状況です。 今の所、SQLはACCESS(2003)上にて手打ちしています。 以上、ご教示のほど、宜しくお願い致します。

  • SQLの書き方について教えてください。

    accessについて。 シートの中に列名name、列名friendnameがあります。 name,friendname aaaa,bbbb bbbb,cccc cccc,aaaa dddd,aaaa eeee,bbbb ffff,eeee ほしいデータは aaaa,bbbb,cccc bbbb,cccc,aaaa cccc,aaaa,bbbb dddd,aaaa,bbbb eeee,bbbb,cccc ffff,eeee,bbbb と友達の友達の名前がほしいのです。 SQLの書き方を教えてください。 よろしくお願いします。

  • Excelでの重複削除なんですが。

    VBA、マクロについては勉強し始めたばかりですが、よろしくお願いします。 Excelで、下記のようなデータをソートし、別シートに表示させたいのですが、 条件が、B列でソートを行い、 1、メーカー/年式 型番(abcd/02/AAAA)までが一緒の文字列を検索。 2、別シートに表示させるデータは、一番長いデータで、それ以外は削除。 (担当者が変わり、入力の書式も変わっていたので、同じ商品を違う書式で書いて、重複しているのでそれを1つにまとめたいのです。) A B 1 商品名  メーカー/年式 型番 その他 2 AAAA   abcd/02/AAAA 3 AAAA abcd/02/AAAA/v21 4 AAAA   abcd/02/BBBB/v21 5 BBBB   abcd/05 CCCC(v20) 6 BBBB   abcd/05 CCCC(v20,w00,h00) . . . 1000 XXXX       ↓ (別シート) 1 AAAA abcd/02/AAAA/v21 2 AAAA   abcd/02/BBBB/v21 3 BBBB   abcd/05 CCCC(v20,w00,h00) わかりづらくて申し訳ありませんが、どなたかお知恵をお貸し下さい。

  • ACCESSのテーブルの行と列を入れ替えたい

    Access2000を使っているのですが、テーブルの行と列を入れ替えて、Excelへエクスポートを試みています。 しかし、Excelへのエクスポートのやり方は解るのですが、テーブルの行と列を入れ替えるやり方が解りません。 具体的には ID| 年月 |用件 01|2005/03|aaaa 02|2005/04|bbbb 03|2005/05|cccc とあるのもを ID  01 02 03 年月 2005/03 2005/04 2005/05 用件 aaaa bbbb cccc というふうに変換したいです。 よろしくお願いします。

  • ブロックの管理

    oracleなどのデータベースのブロック管理について ブロック内はブロック管理用領域と行データとで構成されてますが 更新後のブロック内の行データはどのように管理されているか教えてください。 1AAAA2BBBB3CCCC4・・・・・と順編成で行データが入れられていって 途中で2行目のデータをBBBBRRRRと更新する場合、2BBBBの後ろに挿入されず離れた場所の、空き領域にRRRRが書かれる状態で管理されるのでしょうか?1AAAA2BBBB3CCCC4・・・・・空き領域2RRRR それとも1AAAA2BBBBRRRR3CCCC4・・・・・ と3行目以降をずらしてBBBBの後ろに挿入するように更新されるのでしょうか?

  • ACCESSのフォーム上に連番番号を表示したい

    お世話になります フォームは単票型でなく、表型です↓ 例 1 aaaa1 bbbb1 cccc1 2 aaaa2 bbbb2 cccc2 3 aaaa3 bbbb3 cccc3 aaaa1等、右側はテーブルからデータを表示しています この、左の1,2,3、は単なる、表示で関連付けるデータは ありません この単なる1,2,3、はどのようにだすのですか よろしくお願いします

  • Excel抽出のマクロかVBAを教えてください

    A列にxxxがあった場合、その上に存在するIDの値を抽出する方法を教えていただけますでしょうか? 例)xxxがあった場合、IDの値を抽出したい。 以下の場合、ID:1111とID:3333と表示したい。 (ID以降の値はランダムです) A列 ID:1111 aaaa bbbb cccc dddd eexxx ←xxxがあるのでその上のIDを抽出 ffffff ID:2222 aaaa bbbb cccc dddd eeee ffffff ID:3333 aaaa bbbb cccc dddd eexxx ←xxxがあるのでその上のIDを抽出 ffffff

  • A列にあったものには1、C列にあったものには2

    シート1の内容をVBAをつかってシート2のようにしたいです。 つまり、シート1の2行目以降のデータをシート2のB列につなげて、 A列には シート1の1行目に記載している番号をふっていきます。 もともとA列にあったものには1、C列にあったものには2、E列にあったものには3と振りたいのですが、どのようにマクロを書けばいいでしょうか? [Sheet1]   A  B  C  D  E 1 1  2  3 2 aa aaa aaaa 3 bb bbb bbbb 4 cc cccc 5  dddd ----------------------------- [Sheet2] A B 1 1 aa 2 1 bb 3 1 cc 4 2 aaa 5 2 bbb 6 3 aaaa 7 3 bbbb 8 3 cccc 9 3 dddd

  • Word 上で、「行区切り」記号を置き換えるには?

    Windows 98SE で、Word 2000 を使っています。 あるところからデータをコピーして、Word 上に貼りつけたところ、 AAAA↓ BBBB↓ CCCC↓ ------ のように、ずらっと並びました。 各行末の"↓"は、Shift+Enterキーを押した時の「行区切り」記号です。 これをコンパクトに印刷するために、この「行区切り」記号を置き換えて、たとえば AAAA◆BBBB◆CCCC◆ ----- のように編集したいと思っているのですが、どうもやり方が良く分からないでおります。 どなたかご存知でしたら、よろしくお願いいたします。

専門家に質問してみよう