• ベストアンサー

EXCEL VBA 自動でシート分け後に集計したい

お世話になります。 添付の様な表があります。 この表のどこかに「集計」というボタンを作成して、ボタンをクリックすると矢印右図のように支店別にシートを分けて、さらに担当セールス毎になっていた売上金額を合計して集計したいのです。 当方素人で、大変申し訳ございませんが、どなたかロジックをご教授いただけませんでしょうか。 よろしくお願い致します。 環境 EXCEL2013     Widdows7

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

なぜ全ての「年月」のデータが同じなのでしょうか。何か意図があるのですか。 手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim h as range  on error goto errhandle  worksheets("元データのシート名").select ’適切にシート名を記入する事 ’支店名一覧の作成  range("Z:Z").insert shift:=xlshifttoright  range("B:B").advancedfilter action:=xlfiltercopy, copytorange:=range("Z1"), unique:=true ’支店ごとに転記  for each h in range("Z2:Z" & range("Z65536").end(xlup).row)   with worksheets(h.value).range("C2")    .formula = "=SUMIF(元データのシート名!B:B,B2,元データのシート名!D:D)"    .value = .value   end with  next  worksheets("元データのシート名").select  range("Z:Z").delete shift:=xlshifttoleft  exit sub errhandle: ’支店名シートの新調  worksheets.add after:=worksheets(worksheets.count)  activesheet.name = h.value  worksheets("元データのシート名").range("1:1").copy destination:=range("A1")  range("C:C").delete shift:=xlshifttoleft  range("A2") = worksheets("元データのシート名").range("A2").value  range("B2") = h.value  resume end sub ファイルメニューから終了してエクセルに戻る シート上にオートシェイプの図形等(あるいはフォームコントロールのコマンドボタン)を配置、ボタン絵柄に作成してから右クリックしてマクロの登録を開始、用意のマクロを登録して実行する。

yakkun2338
質問者

お礼

keithinさん、早速のご連絡ありがとうございました! ご教授いただきました方法で集計できました!! 本当に助かりました。 いつもありがとうございます。

関連するQ&A