• ベストアンサー

集計するマクロ

面倒ですが宜しくお願い致します。 例えば宅配会社だとして 日付 支店 地域 種類 金額 6/1 A店  A町  A  160円 6/2 B店 B町 B  100円 6/2 C店 B町  C 150円 ~ 7/30 Z店  Z町 Z 200円 のような表があったとして この表でA店,B店のみで種類がA,B以外の月ごとで地域ごとの合計金額を集計して表にするようなマクロを作るにはどうすればよいでしょうか?

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.6

<サンプルデータ> 6月1日 A店 A町 A 160 6月2日 B店 B町 B 100 6月2日 C店 B町 C 150 7月1日 Z店 Z町 Z 200 A1~E4 のセルにそれぞれ入力されています。金額は計算できるように数値です。 A列は日付。 このとき、 ・A店の金額だけを集計  =SUMPRODUCT((B1:B4="A店")*(E1:E4)) ・6/1~6/30 の金額だけを集計  =SUMPRODUCT((A1:A4>=DATE(2006,6,1))*(A1:A4<=DATE(2006,6,30))*(E1:E4)) ・6/1~6/30 のA店の金額だけを集計  =SUMPRODUCT((A1:A4>=DATE(2006,6,1))*(A1:A4<=DATE(2006,6,30))*(B1:B4="A店")*(E1:E4)) のように SUMPRODUCT 関数で求められます。 途中ある * (アスタリスク)は論理積、つまり AND の代わりだと理解して 良いです。条件をこれで連結しています。 VBA より手軽でいいと思いますよ。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • TTak
  • ベストアンサー率52% (206/389)
回答No.5

検索までVBAでやると、ループ処理が要りますので、データ数が増えるほど処理が遅くなります。どうしてもVBAでやるなら、VBAでオートフィルタを操作すれば良いと思われます。私はSUBTOTAL関数と、オートフィルタを組み合わせて使っています。コーディングが楽です。 コードの順序は 1) 日付~種類のフィールドにオートフィルタをかけます。 2) 金額フィールドの最下段にオートフィルタ対応の合計金額の計算式入力。 3)オートフィルタで絞り込み 4) 2)の結果の値のみを張り付け 5)オートフィルタ解除 となります。 検索条件をその都度入力したい場合は、3)にINPUTBOX関数などを使うと良いでしょう。

全文を見る
すると、全ての回答が全文表示されます。
  • ipsum11
  • ベストアンサー率21% (55/251)
回答No.4

すごい適当なので、後は自分で直してみてください。 For c = 1 To 5 If s = "" Then s = Cells(c, 1) ElseIf Month(CDate(s)) <> Month(CDate(Cells(c, 1))) Then Debug.Print Year(CDate(s)) & "/" & Month(CDate(s)) & "" & g & "円" g = 0 End If If (Cells(c, 2) = "A店" Or Cells(c, 2) = "B店") And (Cells(c, 4) <> "A" And Cells(c, 4) <> "B") Then g = g + Val(Cells(c, 5)) End If s = Cells(c, 1) Next c Debug.Print Year(CDate(Cells(c - 1, 1))) & "/" & Month(CDate(Cells(c - 1, 1))) & "" & g & "円" ちなみに、結果を新しいブックに出力することも可能です。上記の例で、「Debug.Print ~」の部分をファイル出力に変えてやればできると思います。 ファイル出力に関しては、調べてみてください。

全文を見る
すると、全ての回答が全文表示されます。
  • chem_taro
  • ベストアンサー率32% (33/101)
回答No.3

VBAを使うのであれば、どんなに複雑な計算でも可能ですが、BASIC(プログラミング)の知識が必要になります。 BASICを扱ったことがないのであれば、おすすめできません。

全文を見る
すると、全ての回答が全文表示されます。
  • chem_taro
  • ベストアンサー率32% (33/101)
回答No.2

#1の訂正です。 6/1,A店,A町,A,160円,※1,※2 ※1(F)は =IF(AND(OR(B2="A店",B2="B店"),AND(D2<>"A",D2<>"B")),1,0) ※2(G)は =F2*G2 ようは※1で条件にあうもののみ1をかえし、あわないものを0をかえし、それを合計にかけます。

全文を見る
すると、全ての回答が全文表示されます。
  • chem_taro
  • ベストアンサー率32% (33/101)
回答No.1

VBAを使ってマクロで解決できるならその方が早そうです。もし、関数のみでするなら =IF(AND(OR(B2="A店",B2="B店"),AND(D2<>"A",D2<>"B")),1,0) という関数を入力した列を金額のとなりF列?に入れます。 これで、「支店がA店またはB店である」かつ「種類がAではなくかつBでもない」であれば1が、そうでなければ0が入ります。 次に隣のG列?に =E2*E2 をいれます。 条件に合わない場合E2には0がはいっていますので、金額は0円になります。条件に合う場合のみ、合計金額が入ります。 あとはこれを合計します。 かなりスマートじゃないですね・・・ あとは、アドイン(インストールの際に選ぶオプション)の「条件付合計式ウィザード」を使うっていう手もあるかもです。(こっちの方がスマートかな)

参考URL:
http://kedu.kenet.ed.jp/hp/tips/tips043.pdf#search='譚。莉カ莉伜粋險医え繧」繧カ繝シ繝・
hetox2
質問者

補足

早速の回答ありがとうございます。 VBAで作成するとどのようになりますか? ちなみに結果を新しいブックに出力することは可能ですか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロの集計について

    ↓このような場合マクロの集計はできますか?    社名 金額  A社 100円  B社 300円  A社 200円  A社 100円  B社 200円 ↑このようなエクセルの表がある場合で 月末などにトータルの金額を別シートに  社名 金額  A社 400円  B社 500円 といったような表示をすることはできますか?? マクロを勉強中ですので、何卒宜しくお願いします。

  • フォルダー内の支店ごとのブックを集計するマクロを

     エクセル2010で、1つのフォルダ内にある複数のエクセルファイル(約100支店分)から、日次売上等の集計マクロを作成したいのですが方法がわかりません。 上司からの依頼を受け、ひとり悩んでましたが・・・で皆さんに相談です。ご協力お願いします ■基本条件 ・毎日、支店がフォルダ内の売上情報を入力(更新)し保存する。 ・全店とも中身は同書式同形式ファイル  例)実績報告A店.XLS、実績報告B店.XLS・・・ ■マクロ(集計.XLS)でやりたいこと ・各支店ブックの実績シートから、支店名(A5)・売上A(B5)・売上B(C5)を転記し明細表の作成 ・集計表の作成 マクロど素人の私に、どなたか教えていただけますでしょうか? よろしくお願いします。

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

    お世話になります。 Accessからエクスポートした表があります。 (集計元表) [商品名]|[支店名]|[日付]|[売上数]| 商品A|支店1|2011/08/01|6| 商品A|支店1|2011/08/05|2| 商品A|支店2|2011/08/01|3| 商品B|支店1|2011/08/01|9| 商品B|支店2|2011/08/01|1| … これを以下のように、商品毎に表にしたいのです。 (集計表:商品A) 商品A|8/1|8/2|8/3|8/4|8/5|合計| 支店1| 6 | 0 | 0 | 0 | 2 | 8 | 支店2| 3 | 0 | 0 | 0 | 0 | 3 | 合計 | 9 | 0 | 0 | 0 | 2 | 11 | (集計表:商品B) 商品A|8/1|8/2|8/3|8/4|8/5|合計| 支店1| 9 | 0 | 0 | 0 | 0 | 9 | 支店2| 1 | 0 | 0 | 0 | 0 | 1 | 合計 | 10 | 0 | 0 | 0 | 0 | 10 | 合計の行/列は最後にsumしますが、集計元表から 集計表カドの商品名、日付、支店を判別してセルに売上数を収める 手段のヒントを頂ければ幸いです。 セル関数でもVBAでもなんでも構いません。 宜しくお願いします。

  • 集計方法を教えてください。

    複数シートのデータを集計用に作成したシートにデータをコピーしたい。 シート1(支店A)  2008/03/31 ノート 100  2008/04/20 乾電池 200 シート2(支店B)  2007/10/31 乾電池 200  2008/01/06 鉛筆  100 シート3(集計表) (品名) (営業所)(数量) (日付)  乾電池  支店A  200  2008/04/20       支店B  200  2007/10/31  鉛筆   支店B  100  2008/01/06  ノート  支店A  100  2008/03/31 ※集計表には、品名と営業所名のみが記載されているため「数量」と「日付」のみをコピーしたい よろしくお願いします。

  • 集計表に関数を入れて運送料金を出したく関数をネストして作ったりしてみま

    集計表に関数を入れて運送料金を出したく関数をネストして作ったりしてみましたがどうしてもできません。 内容としては運送会社、A社とB社があり、A社の中でも2種類の金額があります(B社は1種類) 集計表の運送会社A社に○が入り、なおかつ商品NO.1もしくは2が入ったときは500円、3~5が入ったときは300円、宅配業者B社に1が入ったときは1000円としたいときはどのようにすればよろしいのでしょうか? よろしくお願い致します。

  • Excel 2007 マクロ 表の集計

    Excel 2007 マクロ 表の集計 「Sheet1」に2つの表があります。 <元データ>の項目ごとに<集計結果>の 計の列に数字が反映されるようにしたいと考えています。 表の画像を添付します。 <元データ>の項目のアルファベットごとに<集計結果>の 項目に分かれます。 マクロの記録では下記にようになりました。 Sub Macro1() ' ' Macro1 Macro ' ' Range("B15").Select ActiveCell.FormulaR1C1 = "=R[-12]C+R[-11]C+R[-10]C" Range("B16").Select ActiveCell.FormulaR1C1 = "=R[-10]C+R[-9]C" Range("B17").Select ActiveCell.FormulaR1C1 = "=R[-9]C+R[-8]C+R[-7]C" Range("B18").Select End Sub どのようにすれば、マクロでアルファベットごとに集計できるのでしょうか。 よろしくお願いいたします。

  • マクロの集計について教えてください。

    マクロの集計について教えてください。 初心者のため、質問方法が間違っているところがあるかもしれませんが、お助けいただけると幸いです。 以下のような表で、佐藤さんの合計520、田中さん600、木村さん、25という値を出したいのですが、 作成したマクロ(下に添付)では佐藤さん20、田中さん600、木村さん20というように、その人の一番下の行のデータを集計してしまいます。 過去の質問集を検索して、なんとなくAdvancedFilterを使うのかな、という気はしますが、よくわかりません。 お助けいただけると本当にありがたいです。どうぞよろしくお願いします。 A列  B列    C列 佐藤  B     500 佐藤  B     20 田中 A 600 木村    D      5 木村 D 20 Selection.Sort Key1:=Range(KeyCell), Key2:=Range(KeyCell2), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlSyllabary

  • エクセル 項目、種類の変わる元表から集計したい

    エクセルでの質問です。 サンプルにあるように、同じシートに、元表とまとめ表があります。 まとめ表には、別シートから項目と金額が貼り付けられるようになっています。 やりたいのは、元表の項目種類を集計し、まとめて表に金額集計をしたいんです。 だけども例1、例2にあるように元表に貼付られる項目の種類、数は毎回異なり、範囲が 変わってしまう事で悩んでいます。 実はマクロでこのエクセルファイルを開くと、別エクセルファイルのデータを読込、自動で まとめ表までの結果が計算されることを目指していて、元表に項目と金額が貼付られる ところまで、出来たところです。 なのですが、毎回変わる元表のデータを、まとめ表に集計する所で悩んでいます。 ピボットテーブルを使えばいいのかなと思うのですが、毎回、範囲とデータが変わるため、 範囲と再計算をしなければならないと思いますが、どのようにしたらよいでしょうか? 頭の中がごちゃごちゃして判らなくなってしまいました。 マクロも詳しくなく、マクロの記憶で、なんとか組み合わせてやっている初心者です。 申し訳ありませんが、私でも判るようなレベルで教えて頂けると、助かります。 宜しくお願いいたします。サンプル見えないと困るので下にも書きます。ずれてますが すみません。 例1            例2 シート1         シート1 まとめ表         まとめ表 項目   金額       項目   金額 1A    260       1A     250 2A    500       2B     510 3A    770       3A      20 4A     30       4B     780                6A    400                7A    500 元表             元表 項目   金額         項目  金額 1A    100          1A   100 1A    150          1A    150 1A     10          2B     10 2A    200          2B    200 2A   300           2B     300 3A     20          3A     20 3A    300          4B    300 3A    450          4B    450 4A     30          4B    30                  6A   400                  7A   500

  • データの集計についてVBAマクロを組んでください。

    下記のようにA列に金額 B列に欄No.があります。VBAマクロで集計した結果を出すマクロの記述の仕方を教えてください。 金額  欄No. 232     1 1005    1 812     2 425     2 193     1

  • EXCEL表を関数で集計する方法を教えてください

    以下のような表があるとします。 会社名 日付  金額 A社  9/1 10,000 A社  9/1 30,000 A社  9/3 20,000 B社  9/1 10,000 C社  9/4 30,000 C社  9/4 20,000 C社  9/5 30,000 C社  9/5 20,000 これを、以下のように、会社名と日付で集計したいのですが 会社名 日付  金額 A社  9/1 40,000 A社  9/3 20,000 B社  9/1 10,000 C社  9/4 50,000 C社  9/5 50,000 関数でやる方法をお教えください。 よろしくお願いします。

Adguardが起動できない
このQ&Aのポイント
  • 昨年8月に1年版を購入したAdguardが急に起動できなくなった
  • Adguardのサポート担当者とのやりとりを経ても解決せず、時間の無駄になった
  • 2台目のPCでは正常にAdguardが起動している
回答を見る

専門家に質問してみよう