• ベストアンサー

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

  • エクセルで、複数ブックの表を効率的に集計する方法

    エクセルで、複数ブックの表を効率的に集計する方法を考えています。 定型の集計用シートがあり、Aさん、Bさん、Cさんの3人が記入するとします。 その結果できたシート(シートa、シートb、シートcとします)を以下の2つの方法で集計したいと考えています。 (1)串刺し。上記の様式と同じかたちの集計シートを作成し、各項目ごとに数字を合算。 (2)縦並びの一覧表。 シートaの項目、シートbの項目、シートcの項目が縦に並ぶ一覧表です。 ちなみに、上記3シートは、同一ブックではなく、異なるブック(ファイル)です。 この例のように、3つくらいのデータをまとめるのであれば、手作業でなんとでもなるのですが、実際は、数十~百数十のデータの集計を考えています。 こういう作業を効率的に行う「方法」か「アプリケーション」はありますでしょうか? ちなみに、「Excelシート差込アドイン」というアプリケーションを使って少し省力化できました。

  • エクセル複数のシート集計で困っています。

    シート1のデータを ほかの複数のシートにそれぞれ集計しようと思うのですが、いくつかの箇所がうまくできません。お分かりになる方教えていただけないでしょうか。 シート1にデータがあります。     A   B   C    D 1  100   90   80   100      単価 2  もも  りんご ぶどう  リンゴ    名称 3  山梨  青森  長野  長野     適用 4   5    0    10    5       注文a 5   7    9     2    5       注文b シート2(4行目のデータ集計・注文b)    A    B   C     D 1  もも  5   100    山梨 2 3 ぶどう 10   80    長野 4 りんご  5   100   長野     シート1に注文数がある場合 シート2 シート3・・・それぞれB列に数量が自動で入るように設定しています。 数字が入った場合だけA列・C列・D列の内容がシート1のセルから自動で入るよう設定したいのですが、うまくできません。  (シート1のデータはいろいろ変わります。) どなたか、アドバイスいただけないでしょうか?よろしくお願いいたします。

  • ピポットテーブル以外で複数条件の集計をしたい。

    2つのファイルがあります。 ファイルAには キー項目1 キー項目2 金額。 ファイルBには キー項目1 キー項目2 10月 11月・・・。 10月、11月の列にはデータは入っていません。 この集計結果が入るようにしたいです。 AとBを比較して「項目1」and「項目2」と一致するデータの金額をファイルBの各月の列へ集計したいのです。 ファイルAは1ヶ月分のデータが入っています。 ただ集計をしたい場合はピポットテーブルで出来たのですが、決まった列&行へその集計結果を入れたいです。 分かり難いかもしれませんが、よろしくお願いします。 

  • エクセルの集計について

    エクセルの集計について エクセルでのデータ集計でこのパターンが多いのですが、手作業でやると非常に稼動がかかりなんとか関数を使ってできないかと思いますが、考えても思い浮かびませんでした。 どなたかお知恵をお貸しください。 添付ファイルの「Sheet1」のA列の順番を入れ替えて「Sheet2」のようにしたいです。 (実際はもっと項目が多く、A列の項目も「Sheet1」と「Sheet2」は完全一致ではありません) できるかわかりませんが、「Sheet1」のA列から「Sheet2」のA列の項目を検索し、その行の数値を 「Sheet2」に入力するという関数があれば教えていただきたいです。 「Sheet1」は毎月データが変わるので、新しいデータをコピー&ペーストすれば「Sheet2」が完成するように関数を設定しておきたいです。 うまくやりたいことが説明できているか不安ですが、よろしくお願いします。

  • エクセルの集計について

    エクセルの集計について エクセルでのデータ集計でこのパターンが多いのですが、手作業でやると非常に稼動がかかりなんとか関数を使ってできないかと思いますが、考えても思い浮かびませんでした。 どなたかお知恵をお貸しください。 添付ファイルの「Sheet1」のA列の順番を入れ替えて「Sheet2」のようにしたいです。 (実際はもっと項目が多く、A列の項目も「Sheet1」と「Sheet2」は完全一致ではありません) できるかわかりませんが、「Sheet1」のA列から「Sheet2」のA列の項目を検索し、その行の数値を 「Sheet2」に入力するという関数があれば教えていただきたいです。 「Sheet1」は毎月データが変わるので、新しいデータをコピー&ペーストすれば「Sheet2」が完成するように関数を設定しておきたいです。 添付ファイルが1つしか設定できないようなので、「Sheet1」「Sheet2」を仮想的に1つのシートにさせていただきました。 うまくやりたいことが説明できているか不安ですが、よろしくお願いします。

  • 特定行をカウントする(エクセル)

    エクセルの数式について質問させてください。 下記イメージのシートが2つあります。 [日時シート]の日付と作業が[詳細シート]の日付と項目名に一致する数をカウントし、[詳細シート]の作業数(C列)に表示させたいと考えています。 カウントは項目名をキーにすることでできるのですが、「日付が一致する行を選択する」方法が分かりません。ご教示いただきますようお願いいたします。 類似の質問を探しましたが見つけれませんでした。 もし類似の質問がある場合はURLでも教えていただければ幸いです。 お手数をおかけしますがよろしくお願いいたします。 [詳細シート]    A   B    C  +------------------------------------- 1 |日付 項目名 作業数 2 |11/1  a   3 3 |11/1  b   1 4 |11/1  c   0 5 |11/2  a   1 6 |11/2  b   2 7 |11/2  c   2 [日時シート]    A   B   C   D   E   F  +--------------------------------------------------------------- 1 |日付 作業1 作業2 作業3 作業4 作業5 2 |11/1  a   a   a   b   a 3 |11/2  c   c   a   b   b

  • エクセルで集計したいのですが・・・

    エクセルで以下のような集計をしたいのですが、教えていただけませんか? 行2以下の各行について、 行1のデータ(数値)と一致する数の合計をそれぞれの行について 集計したいのです。    A  B  C  D  E  一致数 行1 1  2  1  3  5   行2 2  3  2  3  5   2 行3 1  2  1  4  5   3 行4 4  2  1  3  4   3 行5 1  2  1  3  5   5 ・ ・ よろしくお願いします。

  • エクセルVBA 集計

    事情がありピボットテーブルを使用しないで実現したいです シート1のドロップダウンリストで集計したい項目を2つ選択(15項目中) 例えば、項目1が色、項目2が形と選択 シート2に500件程(数が増える)のデータがあり、シート3へ集計 (シート3)  A | B | C | D |・・・・・・ 1|色|数|形|数|・・・・・・ 2|赤|30|○|10| 3|青|20|△|20| 4|白|40|□|30| 5|黄|40| ・ ・ シート1で設定した項目1でシート3の1行目を参照し、合致したデータをシート4のA列、B列に貼り付け シート1で設定した項目2でシート3の1行目を参照し、合致したデータをシート4の1行目、2行目に貼り付け 数値は例えばC3なら赤で○のものを表示 (シート4)  A | B | C | D |・・・・・・ 1| |   形  |・・・・・ 2| | |○|△|□| 3| |赤|20|10|16| 4|色|青|10|15|23| 5| |白|14|15|35| 6| |黄|17|15|35| ・ ・ このような感じでシート4を作るVBAをご伝授ください。 シート1、シート2、シート3は出来ているので大丈夫です。 稚拙な説明ですいません。 よろしくお願いいたします。

  • エクセルで複数シートに記載のデータを集計する方法

    エクセルで下記【各シート】のように複数のシート毎にデータが記載してあり、これを【集計イメージ】のようにひとつのシートにまとめたいと思っています。  【各シート】〔※記載している各項目・列の配置は同じ。但し、記載している行がばらばらです。〕  < Sheet1 >  < Sheet2 >  < Sheet3 > ・・・・<Sheet50>    A : B     A  : B     A : B  1名前:田中  1住所:大阪  1性別:男  2住所:東京  2名前:佐藤  2名前:山田  3性別:男    3性別:女    3住所:群馬  【集計イメージ】  <      集計シート      >    A     : B : C  : D  1シート番号:名前 :住所 :性別  2    1   :田中 :東京 :男  3    2   :佐藤 :大阪 :女  4    3   :山田 :群馬 :男    ・    ・ そこで、各シートの行が順序ばらばらになっているため、シート名に連続性(Sheet1・Sheet2・Sheet3・・・・SheetNのようにシート番号のみかえる形)を持たせたうえで、以下の式のようにVLOOKUP関数にて各項目を検索し、オートフィルにてすべての各シートの値を集計しようとしたのですが、#valueエラーが出てしまい上手くできません。   【式 B2=VLOOKUP("名前","Sheet"&$A2&"!1:65536",2) 】 ここで、ご質問なのですが、  (1)恐らく、範囲("Sheet"&$A2&"!1:65536")が間違っているのだと思いますが、どのように修正すればよいでしょうか?  (2)また、VLOOKUP関数の他に良い方法がございましたら、合わせて教えていただければ助かります。 よろしくお願いします。

  • エクセル2007 VBA シート1に入力されている項目をシート2の中で

    エクセル2007 VBA シート1に入力されている項目をシート2の中で検索し、新規シートにコピーする方法についてです。 例) シート1 A        B  C 取引先名 品目C 数量 A      1-1 25 B      あ12  5 C      T-8 10 :       :    : シート2 A       B    C      D    E 得意先C 取引先名 製品名  品目C  数量 001    (株)B    ケーブル あ12  10 002    (株)A    箱     1-1  20 002    (株)A    箱     1-1   7 002    (株)A    箱     1-1   5 :       :     :      :     : 上記の状態で、シート1の項目をシート2から検索します。 ・取引先名は一部分でも一致するあいまい検索で、品目Cは完全一致で検索したいです。 ・シート2には検索項目のデータが複数あるのですが、結果が一致する行を選択し新規シートにコピーペーストしたいです。 出来れば下記の処理も実行したいです。 *シート1の数量を、シート2の1行目から順に検索したデータから計算して、シート1の数量に満たした分だけをコピーペーストしたいです。  シート1の数量に満たさない場合も取り敢えずシート2にある分のデータをコピーペーストして、処理が終わったら不足している項目データに印をつける。  取引先Aの場合→数量が20個と7個の行をコピーペーストする感じです。 グーグルで調べたのですが、調べ方が悪いのか最初から躓いてしまいました。 今回はコードを記入していなくてすみません。 サンプルコードありで教えていただけるととても助かります。よろしくお願いします。

専門家に質問してみよう