• 締切済み

エクセル 各シートの合計の小計を別シートに出したい

エクセル2007を使っています。 去年一年に使われた各部品の総計を出したいのですが教えて下さい。 まずデータをシステムからエクセルにエクスポートする。 各シートには一種類ずつの製品、それに使われる部品の合計。 シートAには製品Aに使われる部品X一年の出荷数=使用された各部品の合計 同じくシートBには製品Bに使われる部品X一年の出荷数=使用された各部品の合計 というように製品Jまで10シートあるとします。←今ここ A-Jまでの製品には重複部品があるのでここで各製品の各部品の合計を別シートにまとめたいのですが簡単にできる方法はありますか? ちなみに各シートに部品の合計の計算式が入っているので、各シートのデータをコピペしてまとめてもソートし直してデータの小計で出すともうまったく違った数値が出てきてしまう、もしくは0になります。部品は全部で1000種類以上あるのでひとつずつ手作業で入れるのは不可能です(いや可能ですが拒否です)。 会社の在庫管理システムが去年からちゃんと起動していないことが分かりこの作業をしています。 これで出た数値を元のシステムにマイナス数としてインポートして現在の部品の在庫数を出すために作業しています。これ自体は簡単なので問題はないのですが... ちなみにマクロとかは使用したことがありません。 よろしくお願いします。

みんなの回答

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

こんにちは! 各Sheet(10Sheet)とも1行目がタイトル行で、データは2行目以降にあり A列が「部品名」、B列が「数量」になっているとします。 集計用のSheetは一番最後(Sheet見出しの11番目)にあるという前提で・・・ お望みでないVBAになってしまいますが・・・一例です。 Alt+F11キー → 画面左下の「This Workbook」をダブルクリック → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub 集計() 'この行から Dim i, k As Long Dim ws As Worksheet Set ws = Worksheets(11) Application.ScreenUpdating = False i = ws.Cells(Rows.Count, 1).End(xlUp).Row If i > 1 Then Range(ws.Cells(2, 1), ws.Cells(i, 2)).ClearContents End If For k = 1 To 10 i = Worksheets(k).Cells(Rows.Count, 1).End(xlUp).Row Range(Worksheets(k).Cells(2, 1), Worksheets(k).Cells(i, 2)).Copy _ Destination:=ws.Cells(Rows.Count, 1).End(xlUp).Offset(1) Next k For i = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row If WorksheetFunction.CountIf(Range(ws.Cells(2, 1), ws.Cells(i, 1)), ws.Cells(i, 1)) = 1 Then ws.Cells(i, 3) = WorksheetFunction.SumIf(ws.Columns(1), ws.Cells(i, 1), ws.Columns(2)) End If Next i For i = ws.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If ws.Cells(i, 3) = "" Then ws.Rows(i).Delete Else ws.Cells(i, 2) = ws.Cells(i, 3) ws.Cells(i, 3).ClearContents End If Next i Application.ScreenUpdating = True End Sub 'この行まで ※ 参考にならなかったらごめんなさいね。m(_ _)m

misopal
質問者

お礼

tom04様、 お返事が遅くなり大変失礼いたしました。 いつかは超えなければいけない壁、マクロ。 そしてこれを期に試してみたのですが、 【Alt+F8キー → マクロ → マクロ実行】が出てきません。 なので実行されず、これが正解だったのか判らずじまいです。 私は在米なのですがExcelは英語でも日本語でも機能は同じ。 なのにAlt+F8キーを押しても何も出てきません。なぜでしょう? しかしこの先を進むことが出来ずまったく予想だにしていなかった展開になり、 私の作成した中途半端なリポートはお蔵入りをしました。 詳細は回答1のaokii様で書かせて頂きましたのでお目を通していただければ幸いです。 時間ができたら是非このマクロが起動するかどうか試してみたいと思います。 しかしAlt+F8がうんともすんとも言わないので何処かが間違っているのでしょうか? 私の予想ではこれが正解なのでは?と思っております。 貴重なお時間を無駄にしてしまい申し訳ありませんでした。 ありがとうございました。

  • myi333
  • ベストアンサー率34% (10/29)
回答No.2

<ちなみに各シートに部品の合計の計算式が入っているので、各シートのデータをコピペしてまとめてもソートし直してデータの小計で出すともうまったく違った数値が出てきてしまう、もしくは0になります。部品は全部で1000種類以上あるのでひとつずつ手作業で入れるのは不可能です> コピペするときに、「値貼り付け」していますか。 「各製品の各部品の合計」をコピーしてKシートに「値貼り付け」する (A列 部品名、B列 使用された各部品の合計 )空白行は削除しておきます。 部品名は重複があるので、部品名の列だけをLシートにコピぺしてから、「重複を削除」します Excel2010ではデータリボンの「重複の削除」を使います。 A列に重複なしの部品名ができたら、B1にsumif関数を入力して下までオートフィルします。  SUMIF(SheetK!$A$2:$B$1000,A1,SheetK!$B$2:$B$1000)

misopal
質問者

お礼

myi333様、 お返事が遅くなり大変失礼いたしました。 貼り付けもしてみましたがちゃんと作動してくれません。 MRPからのエクスポートでフォーマットがおかしいためだと思います。 しかし最後まで試す事が出来ませんでした。 詳細は回答1のaokii様で書かせて頂いたような事となりお詫びしなければいけません。 貴重なお時間を無駄にしてしまい申し訳ありませんでした。 次回同じようなことがあれば試してみたいと思います。 ありがとうございました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

複雑な計算式を使って自動的に合計を出すこともできますが、単純に各シート毎にピボットテーブルを使って、各製品毎の部品を集計し、そのピボットテーブルを、集計する方法はいかがでしょう。 あるいは、各シートのデータをコピーして値のみを貼り付ける方法なら、ソートし直してデータの小計で出すこともできます。

misopal
質問者

お礼

aokii様、 お返事が遅くなり大変失礼いたしました。 ピボットテーブルをちゃんと使った事が無かったので試してみようと思ったのですが、 最終的に皆様から頂いた案は一つも最後まで試す事が出来ず、 そしてまったく思っても見なかった展開になったことをお詫びしなければいけません。 この質問をした翌日に、昨年だけではなく一昨年の在庫もちゃんと管理されていない事が判明。 年末、製造ラインを一週間停め社員一同で棚卸をするのですが、 この棚卸の時にかなりな手抜きがあったことが判明しました。 また製造BOM (部品表)というのが各製品にあるのですがそれも不完全だったことが判明。 製品が出荷されるとそれに使用された部品が在庫から抜かれる訳ですが、 不完全だったためシステム上の在庫と棚卸時の在庫にいつも大きな開きがありました。 不振に思ったため、この上半期の終わりを目途に私自身と選抜した社員とで一斉棚卸、 製造BOMの再確認と再構築、そしてシステムの見直しをしておりました。 やっとひと息つける段階に到達してふと、 「シマッタ、おしえてgooにお礼をしていない」と今に至ります。 貴重なお時間を無駄にしてしまい申し訳ありませんでした。 次回同じようなことがあれば試してみたいと思います。 ありがとうございました。

関連するQ&A

  • Excel Sheet1の合計をSheet2合計へたすには?

    初心者です  毎日の在庫等(Sheet1)合計を  翌日の在庫数(Sheet2~)へと  毎日足していく(1ヶ月分)  このような方法はないですか?  初歩的な質問で恥ずかしいのですが  宜しく願います。

  • エクセル:シートを参照して別のシートをコピーしてくる

    様々な組み合わせで販売する商品について、エクセルで表をまとめています。 ある完成品のシートに記載された部品の品番を参照して、その部品のシートを完成品のファイルにコピーしてくるという作業(各完成品のファイルを作り、完成品の1シートとその部品の複数シートをそこにまとめる)をしたいと思っているのですが、データが大量で手作業が大変です。 完成品ファイルおよび部品ファイルには、1シートあたり1完成品 or 1部品の情報が記載されています。 完成品ファイルおよび部品ファイルの、セルB1およびシート名にはその完成品または部品の品番がタイトルとして書かれています。 完成品のシートのA列(A4から下)に部品の品番が記載されているのですが、完成品によって使用する部品の数は異なるため行数は様々です(最大20行くらい)。 以上の説明で足りるか分かりませんが、どなたか頭の良い方、作業を簡単にする方法をご存知でしたら教えていただけ無いでしょうか。

  • エクセルでシートを隔てての合計計算

    エクセルでシートを何枚も使い、 月ごとに数字を打つ作業をしているのですが、 年末で数字を合計したいのです。 しかし、毎月のシートで項目は同じなのですが、打ち込んでいるセルの場所が違う場合、同じ項目の合計をしたいのですが、できますか? たとえば シート1(1月)に項目「いろは」があるとして、 セルはA1とします。 シート2(2月)に同じ項目で「いろは」があるのですが、セルがA5になっている。 そのような感じでシート3(3月)、 シート4(4月)…と続いて12月まであります。 年末(12月)で項目「いろは」の1月~12月の数値を合計させたいのですが、可能でしょうか? 方法があれば教えて頂けないでしょうか。

  • エクセルで重複するセル合計を別シートへ自動記入

    エクセルのシートAに商品番号(実際は1000個近くあります)と その売り上げ個数がずらっと並んでいます。 各顧客ごとの売り上げ結果なので、商品番号がかなり重複しています。 これをシートBに各商品ごとに売り上げ個数が表示されるような 関数式が知りたいです。 ちなみにシートAとシートBの商品の並び順は違います。 今までは商品ごとに合計を出してから、別シートで該当商品を探し、 手入力で入れていたので、この作業に3時間くらいかかっていました。 入力ミスの可能性もあるので、さらに確認作業も大変でした。 【シートA】 A    B --------- 001  3 001  2 001  2 002  1 002  1 003  1 003  2 003  5 003  3 【シートB】 A   B --------- 001  7 002  2 003  11 いろいろ調べて試してみましたが苦戦しています。 まずはシートAの「C1」に関数「=SUMIF($A$1:$A$2000,A1,$B$1:$B$2000)」を入力し、 各商品ごとの合計数を出し、それをC欄の下(C2000)までとドラッグ?してみたのですが、 そうすると下のように、同じ商品内で数値が重複して出るので、 今度は余計な数値(セル)を削除しないといけないと思い、 そこからつまづいてしまいました。 【シートA】 A   B   C --------------- 001  3  7 001  2  7 001  2  7 002  1  2 002  1  2 003  1  11 003  2  11 003  5  11 003  3  11 長文ですみません。 方法をご存知の方、ぜひ教えてください。 よろしくお願いします!

  • エクセルの合計値が一致しません

    A、B、C、D各シートの「J45」セル合計値を求めるべく、 合計 start A B C D end とシートを7つ並べて 合計のシートの「J45」セルに、 『=SUM(start:end!J45』と関数を入れています。 AのJ45セル値が14.53、Bは139.58、CとDはそれぞれ0なので合計が154.11となり、 合計シートのJ45セル値も145.11と表示されていますが、 ステータスバーには153.18と表示されているのです。 表示形式は「数値」の小数点以下2ケタを指定しています。 A~Dのシートには小数点2ケタの数字を直接数字を入力しており、 小数点以下3ケタより下が隠れている、なんてことはありません。 なぜセル内に表示されている数値と、ステータスバーに 表示されている数値にアンマッチが発生するのか、私には理解できません。 理由の分かる方、どなたか教えていただきますよう宜しくお願い致します。

  • Excelシートが別になったときの合計を関数でだす

    シート1は商品とその単価を入力するデータ表、 シート2はシート1の合計表とします。 たとえばシート1にセルA1に1000円、セルA2に2000と入力したら、 シート2のセルA1に、商品AとBの計3000円が自動で入力されるようにできる関数がありましたら 教えてください。 Excel2019利用です。

  • 別のシートで作ったセルの、合計値を表示させる方法を教えてください。

    別のシートで作ったセルの、合計値を表示させる方法を教えてください。 シート1で 元となるデータの一覧をつくり シート2で プルダウンで対象のデータを選ぶと 関連したデータの合計値が表示される という作業をしたいと思っています。 たとえば、下記のような作業です。 ------------------------------------------ ■シート1     A     B     C  │都道府県名│市町村名│ 人 口 │ ─┼─────┼────┼─────┼ 1 │ 北海道 │ ■■■ │ 1,234,567│ ─┼─────┼────┼─────┼ 2 │ 青森県 │ ▼▼▼ │  890,123│ ─┼─────┼────┼─────┼ 3 │     │ ●●● │  456,789│ ─┼─────┼────┼─────┼ 4 │     │ ××× │  901,234│ ─┼─────┼────┼─────┼ 5 │ 岩手県 │ ◆◆◆ │  678,901│ ◆シート2 ・都道府県名 ┌─────┬─┐ │青森県  │▼│ └─────┴─┘ ・人口 ┌───────┐ │2,248,146   │ └───────┘ (「青森」というキーワードを選ぶと、人口の合計値を算出する) ------------------------------------------ VLOOKUPをいじってみたりしたのですが、上手くいかず。。 どなたかエクセルで上記のような作業をご存知の方がいましたら 教えていただけますでしょうか。 よろしくお願いいたします。

  • エクセルシート間の照合で別の表を作成するには

    エクセルシート間の表を照合して、別のシートに反映させ表を完成させたいと思っています。 倉庫1 と倉庫2 の在庫照合なのですが、品番の記載形式が違います。  どちらもシステムの都合で、変更ができず困っています。 シート1(倉庫1)  A   B    C  品番  色番  在庫数    100   C   2 101   B   8 103   Y   3 シート2(倉庫2)  A     B  品番   在庫数 103Y   0 100C   3 101B   5 シート1 とシート2 の表をシート3へ  A     B      C          品番   在庫数(倉庫1) 在庫数(倉庫2)   100C   2       3 101B   8       5 103Y   3       0 また、結果から、条件付き書式を設定したいと思っていますが。。 たとえば、Cの値が0で、Bの値が5以下の時、行を黄色にする、とかです。 シート1と、シート2の数字が毎日変わります。 今までは品数が少なかったので、それほど支障は無かったのですが、 今後品数が増えることになり、アナログな確認では かなり大変な作業になるのが予想されます・・。 どなたかアドバイスをいただけないでしょうか。 どうぞ宜しくお願いいたします。

  • エクセルで行を挿入し、小計、合計を出したい

    質問いたします。 A列に支店コード(4桁の数値)、J列に金額、K列に手数料があります。 支店は5箇所でデータは1支店あたり100~500行ほどあります。全支店のデータが連続しています。 1.支店コードの最終行の下に1行挿入し、J列,K列の小計を計算する。 2.最後の支店の小計の下に一行あけてJ列,K列の合計をしたい。 どのようにしたら良いか教えてください。

  • エクセルでシートを串刺しに合計する関数

    Sheet1からSheet4の同一セルの数値を、Sheet5のセルに合計して表示する関数はないでしょうか? =SUM(Sheet1!A1:Sheet4!A1)ではだめでした。

専門家に質問してみよう