• ベストアンサー

VBAで月計を出す方法

現在下記のような表があります。      A     B   1| 5月1日 6800  2| 5月2日 3500    ・    ・    ・ 31|5月31日 4800 32| 6月1日 5000    *A、B、1|、2|などはセル番号 このような表が続いており、月ごとに合計を出したいのですが、 どのようにしたら良いでしょうか。

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

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

SUMIF でいけるんじゃない? A 列が日付(時刻なし)で、B 列が金額だとすれば、次のような感じ で Sheet1 が非表示(Hidden または VeryHidden)でも問題なしかな。 あとは、考えてみて下さい。 Sub Sample()   Dim dSum1  As Double   Dim dSum2  As Double   Dim dReturn As Double      With Worksheets("Sheet1")     ' // (A) 6/30 までの合計     dSum1 = Application.SumIf(.Columns("A"), _                  "<=2007/6/30", _                  .Columns("B"))     ' // (B) 5/31 までの合計     dSum2 = Application.SumIf(.Columns("A"), _                  "<=2007/5/31", _                  .Columns("B"))   End With   '// (A)-(B) が 6/1~6/30 の合計となる   dReturn = dSum1 - dSum2      MsgBox CStr(dReturn) End Sub

jellya_a
質問者

お礼

ありがとうございます。 一度試してみたいと思います。

その他の回答 (2)

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.2

#1です。 >数値はフォームに値を入れることによって、セルに入ります。 >ちなみに、値の入ったシートは見えなくなっています。 み…見えないシートの月合計ですか? 見えないシートは「書式」「シート」「再表示」で表示することは可能? シートが見えないと、合計も何もできないかも。

jellya_a
質問者

補足

フォームのボタンを押すことによって、 日付を読んで、月ごとに計算して フォームか、別シートに出してくる形にしようと考えてます。

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.1

今晩は。 C1に「=month(A1)」を入力し、下にコピーします。 月別の識別情報が出来たので 後は、ピボットテーブルなどで求めては? あるいは、 D1に「=sumif($C$1:$C$100,"=5",$B$1:$B$100)」を入力することで5月の合計が求まります。 同様に D2に「=sumif($C$1:$C$100,"=6",$B$1:$B$100)」を入力することで6月の合計が求まります。

jellya_a
質問者

お礼

ありがとうございます。 ただ、私の説明が足らなかったみたいです。 数値はフォームに値を入れることによって、 セルに入ります。 ちなみに、値の入ったシートは見えなくなっています。

関連するQ&A