
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
以上です!
---
エクセルしかない環境で、困っています。どうぞよろしくお願いします!!
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」で重複がないリストになります。
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)))
この回答への補足
ありがとうございます!
シート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
この名寄せがやっかいで・・困り果てています。
どうぞ宜しくお願いします!
ありがとうございました。
<シート2>の名寄せ(行の再構成)は、IF関数でアイテムID(Bの列)をキーに、とにかく同じ行の横の列へチマチマともってくることで対応しました。
=IF(B2=B3,C3,""),=IF(B2=B4,C4,""),=IF(B2=B5,C5,"")
↑コレを延々と、振り分けられている最大カテゴリ数分だけ横に展開。
<シート1>と<シート2>のマッチングは、これもチマチマとVLOOKUPで、値を移しました。
みなさま、本当にありがとうございました。
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などにする)。
この回答への補足
ありがとうございます!!
試してみているのですが、うまくいきません・・。
COLUMN()の範囲指定はしないでこのままでよいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
if関数の複数条件について
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ】数式を入力したい。...
-
同じ名前(重複)かつ 日本 ア...
-
excel
-
エクセルシートの見出しの文字...
-
エクセルの文字数列関数と競馬...
-
エクセルでフィルターした値を...
-
表計算ソフトでの様式の呼称
-
【画像あり】【関数】指定した...
-
Dir関数のDo Whileステートメン...
-
【マクロ】実行時エラー '424':...
-
Excelに貼ったXのURLのリンク...
-
【関数】3つのセルの中で最新...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ】【画像あり】4つの...
-
【マクロ】【画像あり】4つの...
-
セルにぴったし写真を挿入
-
【マクロ】エラー【#DIV/0!】が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでフィルターした値を...
-
if関数の複数条件について
-
エクセルシートの見出しの文字...
-
excel
-
エクセルの文字数列関数と競馬...
-
VLOOKUP FALSEのこと
-
同じ名前(重複)かつ 日本 ア...
-
表計算ソフトでの様式の呼称
-
エクセルに写真が貼れない(フ...
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
【画像あり】【関数】指定した...
-
エクセルのVBAで集計をしたい
-
【マクロ】【画像あり】4つの...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
エクセルのライセンスが分かり...
おすすめ情報