• ベストアンサー

Excel 複数シートで、違う行にある値をキー項目を元に集計したい。

Excelを使用した集計作業で、効率の悪さに頭を悩ませています。 自己解決出来ず、お知恵を拝借出来ればと質問させていただきます。 シートA・Bに同じ構造(列の項目数が一致)のデータを持っています。 A・B両方に入力されているキー項目のデータもあれば、 どちらかのみに登録されているキー項目のデータもあります。 2つのシートで一致するキー項目の値を集計し、 シートCに出力する事を考えています。 A・B両方に入力されている場合は各値を合計し、 片方にしか登録されていない場合はそのまま値を表示したいのですが、 効率の良い手順がわかりません。是非お助け下さい! 具体的には、下記のような事を考えています。 【シートA】 キー項目 値1 値2 値3 値4 A001  10  10  10  10 A002  20  20  20  20 A003  30  30  30  30 A004  40  40  40  40 A005  50  50  50  50 A006  60  60  60  60 【シートB】 キー項目 値1 値2 値3 値4 A001  10  10  10  10 A002  20  20  20  20 A005  50  50  50  50 A007  70  70  70  70 A008  80  80  80  80 ↓ 【シートC】 キー項目 値1 値2 値3 値4 A001  20  20  20  20 A002  40  40  40  40 A003  30  30  30  30 A004  40  40  40  40 A005  100  100  100  100 A006  60  60  60  60 A007  70  70  70  70 A008  80  80  80  80 p.s. 現在は下記のような手順で作業しています。 (1)MATCH関数でシートBのキー項目がシートAの何行目にあるかを出力。 (2)手作業で出力された行にデータを移動し、キー項目の行数を合わせる。 (3)シートCにキー項目をコピーし、  値部分は『='シートA'!B1+'シートB'!B1』のような形で計算。 (4)シートBにのみ存在するデータを結合→キー項目でソート ・・・(2)の手順で、非常に時間を要しています(x_x)

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

  • ベストアンサー
  • _mya_mya
  • ベストアンサー率41% (7/17)
回答No.6

キー項目が予め決まっているのでしたら、隣あたりを作業用セルにして キー項目順に並べた表を作り、シートCでそれらを合計してはどうでしょう。 1)シートA、シートBの使用していない場所(出来れば同じ場所)に  キー項目を縦、横に値1、値2… とした表を作る。    A    B  C  D …     G    H  I … 1 キー項目 値1 値2 値3    キー項目 値1 値2 2 A001  10  10  10     A001 3 A002  20  20  20     A002 2)VLOOKUP関数を使いて、作業セルに値を表示(エラーは、ISERRORで0に)  H2   =IF(ISERROR(VLOOKUP($G2,$A$2:$E$7,2,FALSE)),0,VLOOKUP($G2,$A$2:$E$7,2,FALSE))  I2   =IF(ISERROR(VLOOKUP($G2,$A$2:$E$7,3,FALSE)),0,VLOOKUP($G2,$A$2:$E$7,3,FALSE))  H3   =IF(ISERROR(VLOOKUP($G3,$A$2:$E$7,2,FALSE)),0,VLOOKUP($G3,$A$2:$E$7,2,FALSE)) 3)シートCで、シートAとシートBの作業用セルの値を合計し表示

kt413
質問者

お礼

アドバイスありがとうございました! 教えていただいた数式を参考に、作業させていただき上手く行きました! (1)シートCにシートAのキー項目を並べ、値部分に数式を利用する事で、シートBのデータを取得。 (2)シートAとシートCをシートDで合計。 (3)MATCH関数を利用してシートBにのみ存在するキー項目を抜き出し、シートDに追加。 上級者の方から見るとまだまだ効率悪い作業だと思いますが、今までの作業に比べると、楽園のようです♪

その他の回答 (5)

noname#204879
noname#204879
回答No.5

初めて試してみた結果、[ピボットテーブル レポート]の機能が使えそうですよ。 1.[データ]→[ピボットテーブルとピボットグラフ レポート]を実行 2.“複数のワークシート範囲”および“ピボットテーブル”に目玉を   入れて[次へ]をクリック 3.“指定”に目玉を入れて[次へ]をクリック 4.[範囲]ボックス内にマウスカーソルを置いて、SheetA の範囲 A1:E7   をドラッグ指定(→ SheetA!$A$1:$E$7 と表示される) 5.[追加]をクリック(→ [範囲一覧]窓内に SheetA!$A$1:$E$7 が表示   される) 6.SheetB の見出しをクリック(→ [範囲]ボックス内に SheetB! が表   示) 7.SheetB の範囲 A1:E6 をドラッグ指定(→ SheetB!$A$1:$E$6 と表示   される) 8.[追加]をクリック(→ [範囲一覧]窓内に SheetA!$A$1:$E$7 および   SheetB!$A$1:$E$6 が表示) 9.[次へ]をクリック 10.“既存のワークシート”に目玉を入れて、SheetC のセル A3 をクリ   ックした後、[完了]をクリック すると、次のような集計表が出来上がるはず。 合計 / 値  列 行      値1 値2 値3 値4 総計 A001    20  20  20  20  80 A002    40  40  40  40  160 A003    30  30  30  30  120 A004    40  40  40  40  160 A005   100  100  100  100  400 A006    60  60  60  60  240 A007    70  70  70  70  280 A008    80  80  80  80  320 総計     440  440  440  440 1760

kt413
質問者

お礼

ご回答、ありがとうございました。m(__)m 何度か見た事はあっても、自分で作った事の無かったピボットテーブル。 なるほどこうやって使うと便利なんですね。 知識不足の為、キー項目でも値でも無い項目をどう表示させるかがわからず、 今回は利用を断念してしまいましたが、勉強になりました。 丁寧に説明していただいたのに、消化しきれず申し訳ないです。。。(謝)

  • handomari
  • ベストアンサー率47% (83/174)
回答No.4

No.1&No.2のhandomariです。 先ほどの方法で統合する場合は、行や列に集計に関係のない項目があってもかまいませんが、数値データ以外はデータが空欄になります。 文字データについては、統合の後で、別にコピー&貼り付けで対処するようになりそうです。

kt413
質問者

お礼

何度もアドバイスをいただきましてありがとうございました。 おかげさまで、作業効率がグンと良くなりそうです(^^) 今回は、No6のアドバイスを中心に問題を解決しましたが、 教えていただいた方法で統合してから、空白になった項目にVLOOKUP関数を使えば、 もっと効率が良いのかな、等とも考え勉強させていただきます。

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.3

シートCのセルA1から項目が並んでいるとして セルB2に下記の数式を入力 =IF(ISNA(MATCH($A2,シートA!$A:$A,0)),0,OFFSET(シートA!$A$1,MATCH($A2,シートA!$A:$A,0)-1,MATCH(B$1,シートA!$1:$1,0)-1))+IF(ISNA(MATCH($A2,シートB!$A:$A,0)),0,OFFSET(シートB!$A$1,MATCH($A2,シートB!$A:$A,0)-1,MATCH(B$1,シートB!$1:$1,0)-1)) 少々数式が長いですが、これで如何でしょうか。

kt413
質問者

補足

ご回答ありがとうございます! 多分正しく検証すれば値が表示される数式を教えていただいたのだと思うのですが、 知識不足の為、正常に動かす事が出来ません・・・orz シートCのA列には、シートAのキー項目をコピーするのでしょうか? 多少自力で解決検討してみようと思いますが、 時間が掛かりそうなので、取り敢えず御礼まで(^^;)

  • handomari
  • ベストアンサー率47% (83/174)
回答No.2

No.1の補足です。 メニュー操作する前に、統合結果が出力される位置にアクティブセルを置いておいてください。

  • handomari
  • ベストアンサー率47% (83/174)
回答No.1

メニューから、データ-統合でダイアログボックスを出して、シートAとシートBのデータ範囲を行列の項目名を含めて追加します。 そして、統合の基準を上端行と左端列のチェックをつけてOKすれば完了です。

kt413
質問者

補足

早速の回答ありがとうございます! こんな方法があったのかと、目からウロコです。 甘えて申し訳ないのですが、実はもうひとつ困った事に直面しています。 質問の際に内容を整理しようと省いてしまったのですが、 実は、値1~値4の他に、文字列1,2のような、 集計には利用しない項目もいくつか存在しています。 これらの項目はキー項目に紐付いているデータです。 これらの項目を、一緒にシートCに持っていく事は可能でしょうか・・・ 状況の補足として、 文字列A,Bはキー項目毎に一致していない場合があります。 シートAにキー項目が存在する場合はシートAのデータを優先し、 シートBにのみキー項目があるデータは、シートBのデータを利用したいと考えています。 上記条件分岐は難しいようであれば、常にシートAの文字1,2を利用し、 シートAにキー項目が存在しない場合は空白になっても良いのですが・・・ もし解決方法があればアドバイスをお願いします!m(_ _)m

関連するQ&A