• 締切済み

複数シートのデータを別シートに結合させたい

複数シートのデータを別シートに結合させたい Excelの2つのシートに以下のようなデータがあります。 シート1       シート2 名前  金額1     名前   金額2 aaaa  100      aaaa  100 bbbb  100      cccc  200 これをシート3に新たに以下のように作りたいんです。 名前  金額1  金額2 aaaa  100   100 bbbb  100 cccc       200 シート1と2の名前は重複しているものもあり、 名前を基準にして重複しているものは、両方データを 重複してないものは、それぞれのデータのみをひろいたんですが、 件数が多いため、どのようにするのが一番効率よくできるのか わからないんです。 Accessへシートをインポートとして、クエリでなんとか できないものかと考えたのですが、いまいちうまくできません・・・。 元がExcelのデータなので、Excelの関数などを使って出来る方法が あればいいんですが、ExcelかAccessで効率よく出来る方法を 教えていただけないでしょうか? よろしくお願いします!

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 参考になるかどうか判りませんが・・・ 質問文によるとデータ量がかなり多いようなので、あえて配列数式やSUMPRODUCT関数を使わずにやってみました。 ↓の画像で説明します。 準備作業として、Sheet2のA・B列の間に1列挿入します。 まず、Sheet1のA・B列すべてをSheet3のE・F列にコピー&ペーストします。 次に先ほど1列挿入し、B列が空白になっているSheet2のA~C列のデータをSheet3の最終行以下にコピー&ペーストします。 すると画像のSheet3のE~F列のようになるはずです。 これに作業用の列を1列使います。 作業列H2セルに =IF(COUNTIF($E$2:E2,E2)=1,ROW(),"") という数式をいれ、オートフィルで下へずぃ~~~!っとコピーします。 結果のSheet3のA2セルに =IF(COUNT(H:H)<ROW(A1),"",INDEX(E:E,SMALL(H:H,ROW(A1)))) B2セルに =IF($A2="","",SUMIF($E:$E,$A2,F:F)) という数式をいれ、隣のC2セルまでコピー 最後にA2~C2セルを範囲指定し、C2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 尚、名前の昇順に表示させたい場合はSheet1・Sheet2のデータをあらかじめ昇順に並び替えしておきます。 これで当方使用のExcel2003であれば約6万5000行までExcel2007であれば100万以上のデータがあっても対応できると思います。 以上、ちょっと強引な方法ですが 他に良い方法があれば読み流してくださいね。m(__)m

usausa125
質問者

お礼

画像付で教えていただきありがとうございます! 試してみたらできました。 使ったことのない関数もあるので、じっくり意味を調べて 理解しようとおもいます。 ありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

VBAでやる課題だと思う。 ーー 関数ばかり言っているが、適した課外課題で無いと、式は複雑になって、分かりにくい場合が多い。 ーー メニューのデーター統合の機能でやってみる。 例データ Sheet1 氏名 計数1 a 11 b 12 c 13 e 10 f 5 d 35 Sheet2 氏名 計数2 a 11 b 12 c 13 e 10 d 5 g 45 両シートで行数は同じでなくて良い。内容は似た計数でもシートごとに別名をつけること。 同じ項目名にすると足されたりする。 ーーー Sheet3で 結果を出す左上済む隅セルをA1(何処でも良いが)として選択。 データー統合 集計の方法 合計 範囲選択ボタンでSheet1のデータのある範囲A1:C7を指定。 追加ボタンクリックで 統合元ボックスにセットされる ーー 範囲選択ボタンでSheet2のデータのある範囲A1:C7を指定。 追加ボタンクリックで 統合元ボックスににセットされる ーー 統合元にセットれた範囲は Sheet1!A1:B7 Sheet2!A1:B7 -- 統合の基準 上端行、左端行の両方チェック OK 結果 Sheet3 - 計数1 計数2 a 11 11 b 12 12 c 13 13 e 10 10 f 5 d 35 5 g - 45 -は空白セル(左寄せ表示防止)。

usausa125
質問者

お礼

分かりやすく教えていただきありがとうございます! 試してみたら、できました!感動です。 統合という機能で出来るんですね。 とても助かりました。 どうもありがとうございます!

回答No.2

>ExcelかAccessで効率よく出来る方法を 効率よく作るということなら、ピボットテーブルや統合が使えます。

usausa125
質問者

お礼

画像付きでありがとうございます。 統合やピボットでできるんですね! 複数シートのピボットは使った事がなかったので、驚きました。 ありがとうございます!

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

シート1およびシート2ではA列に名前、B列に金外1および金額2の項目名がそれぞれ入力されておりデータは2行目から下方に入力されているとします。 それぞれのシートには作業列を設けます。 シート1のC2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(A$2:A2,A2)=1,MAX(C$1:C1)+1,"") シート2のC1セルには次の式を入力します。 =MAX(Sheet1!C:C) C2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(Sheet1!A:A,A2)>0,"",IF(COUNTIF(A$2:A2,A2)=1,MAX(C$1:C1)+1,"")) そこでお求めの表ですが例えばシート3のA1セルには名前、B1セルには金額1、C1セルには金額2と項目名を入力します。 A2セルには次の式を入力してC2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>MAX(Sheet2!$C:$C),"",IF(ROW(A1)<=MAX(Sheet1!$C:$C),IF(COLUMN(A1)<=2,INDEX(Sheet1!$A:$B,MATCH(ROW(A1),Sheet1!$C:$C,0),COLUMN(A1)),IF(COLUMN(A1)=3,IF(COUNTIF(Sheet2!$A:$A,$A2)=0,"",INDEX(Sheet2!$B:$B,MATCH($A2,Sheet2!$A:$A,0))),"")),IF(ROW(A1)<=MAX(Sheet2!$C:$C),IF(COLUMN(A1)=1,INDEX(Sheet2!$A:$A,MATCH(ROW(A1),Sheet2!$C:$C,0)),IF(COLUMN(A1)=3,INDEX(Sheet2!$B:$B,MATCH(ROW(A1),Sheet2!$C:$C,0)),"")))))

usausa125
質問者

お礼

教えていただき、ありがとうございます。 いろんな関数がでてきているので、じっくり意味を調べ 理解しながら、試してみます。 ありがとうございました。

関連するQ&A

  • 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の書き方を教えてください。 よろしくお願いします。

  • ACCESS初心者です。

    初歩的な質問ですが、宜しくお願いします。 クエリを作成したいのですが テーブルに以下のようにデータが入っています。 区分  名前 S   AAAA H   AAAA S   BBBB H   CCCC Sしかなければ、Sを SとHのデータがあればSを、 HしかなければHを 抽出する場合、どのように抽出条件を設定すればよいでしょうか? 重複した場合S優先で 以下のようなテーブルを作成したいです。 区分  名前 S   AAAA S   BBBB H   CCCC まだACCESSを初めて間もないのです。 勉強不足ですいませんが、宜しくお願いします。

  • シート1とシート2のデータ一致 抽出方法

    エクセルのデータ抽出でお知恵をお貸し下さい。 シート1 A列  B列     C列 品名  製品番号  数量 AA    1AAAA    200 BB    1BBBB    250 CC    1CCCC    300 シート2 A列   B列     C列 品名  製品番号   数量 AA    1AAAA   200 BB    1BBBB   250 AB    AAAA    500 CC    1CCCC   300 上記のようなシートがあります。 内容は同じなのですが、シート2にはシート1にはない品名、製品番号、数量が含まれます。 シート1の品名、製品番号、数量がすべて一致するものをシート3へ抽出し、 一致しなかったデータ(シート1にはなく、シート2にあるものを含め)をシート4へ抽出したいのですが 何か良い方法はないでしょうか??

  • [Excel]重複データの一方のセルが持つ値を一方の空白セルに反映させたい

    A列にある7000件ほどのデータの中から重複データのみを抽出し、 重複データの一方がB列に持つ値を、もう一方のデータのB列の空白セルに反映させたいのですが、方法はありますでしょうか? 「COUNTIF」を使って重複データの抽出はできますが、一方が持つデータをもう一方の空白に反映させることができません。 手作業では期限に間に合わない可能性がみえて焦っております。 恐縮ですがご教授いただけますでしょうか。 (例) [処理前] A列:B列:C列 1111:AAAA:aaaa 2222:BBBB:bbbb 3333:CCCC:cccc 1111:    :dddd 2222:    :eeee [処理後] A列:B列 1111:AAAA:aaaa 1111:AAAA:dddd 2222:BBBB:bbbb 2222:BBBB:eeee

  • ACCESSとEXCELの連携に関して

    現在マスタの登録業務でEXCELを中心に行っているのですが、件数が10万件を超えておりACCESSに格納しています。 そこで、こちらであらかじめ指定したマスタ名称(キー項目)をEXCEL上に並べておき、ACCESSからその他のマスタ項目を名称の隣にずらりと持ってきたいのですが追加編集を行いたいのですがそんな事可能なのでしょうか?ご教授願いたく。 例>Access マスタ名称 金額 区分 AAAA 100円 原料 BBBB 500円 容器 CCCC 600円 原料 Excel(マスタ名称のみ予め記述しておく) マスタ名称 AAAA←ここに対して金額と区分をACCESSから引っ付けたい CCCC← ※EXCELをACCESSに一度インポートしてクエリ作成する等はしたくないのです。

  • 他シートのある列を検索して一致したらセルに色をつける方法

    次のような処理がしたいのですが、Excelの数式に詳しい方、ご教示お願いします。 次の3つのシートが一つのBOOKにあるとします。 ■Sheet1 1列目 AAAA BBBB CCCC : ■Sheet2 1列目 BBBB : ■Sheet3 1列目 AAAA CCCC : Sheet1の一列目にあるデータについて、Sheet2あるいはSheet3の1列目を検索し一致するものがあれば、Sheet1の一列目の各セルに色をつけるという処理をしたいです。 できれば、Sheet2に一致した場合と、Sheet3に一致した場合とで、色を変えたいです。 よろしくお願いします。

  • 以下の様なファイルの中身から重複を取り除いて表示したいのですが、

    以下の様なファイルの中身から重複を取り除いて表示したいのですが、 awk 'NR==1||prev!=$0;{prev=$0}' file.txt の使い方を教えてください。 何故、重複を除いて表示できるのですが。 printなどを使っていないのに表示ができているのですか。 file.txt 以下中身 ---------------------- AAAA BBBB BBBB CCCC CCCC ----------------------- ↓ AAAA BBBB CCCC の3文字のみを出力したい。

  • あるセルに色を付けた時、別のセルにも同じ色が付く

    表1と表2が有って、表1のセルに色をつけると、表2の同じ内容のセルにも同じ色が付くようにしたいのですが、 良い方法は無いでしょうか? 表1         表2 aaaa  |  bbbb cccc dddd bbbb  |  cccc aaaa gggg cccc  |  aaaa bbbb cccc ・ ・ 表1のbbbbに色つけると表2の複数のbbbbにも同じ色が付くようにしたいです。 セル1つずつに条件付書式を設定しても良いですし、関数で一括でもかまいません。 エクセル2000です。

  • 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) わかりづらくて申し訳ありませんが、どなたかお知恵をお貸し下さい。

  • SQLでの条件抽出方法の記述

    はじめまして。 今回、SQLである条件を絞りたいのですがその方法がいまいちピンと来ず、思考錯誤しております。 例えばですが… テーブルにCD,DATA,YMと定義します。 条件としては、 ・MAXを使わずに、YMという値の個々別の最新のもの ・同じCDは重複しない1件のみ(DISTINCT?) ・表示するのはCDとDATAのみ ・(下図で言うと)DATAは0402~0405まで(BETWEEN?) 図で表すと、 CD DATA YM ---------------- 01 AAAA 0401 01 AAAA 0402 01 AAAA 0403 01 AAaa 0404 01 AAaa 0405  ←01の最新 02 BBBB 0402 02 BBBB 0403  ←02の最新 03 CCCC 0402 03 CCCC 0404 03 cccc 0405  ←03の最新 03 cccc 0406  ←これは期間外    ↓ CD DATA YM ---------------- 01 AAaa 0405 02 BBBB 0403 03 cccc 0405 このように抽出したいのですが、良い書き方はあるでしょうか?

専門家に質問してみよう