ExcelVBAです。


集計について教えてください。

まず最終列(8月)を取得して、その右に集計列を入れ(C列の4月から最終列の月まで)
その状態で集計を入れたいのです。

集計するフィールドが固定していないため(毎月一か月づつ増えていく)
「C列~集計列」と指定したいのですがどのようにしたらいいでしょうか?

グループ基準:商品名(A列)
集計の方法:合計
集計するフィールド:C列から集計列まで

現在の集計表と置き換える
集計行をデータの下に挿入する



商品名 品番 4月 5月 6月 7月 8月・・・・・
えんぴつ
えんぴつ
えんぴつ 
ぺん
ぺん 
ぺん 





よろしくお願いしますっ 

回答の条件
  • 1人3回まで
  • 登録:2008/09/04 22:47:58
  • 終了:2008/09/07 23:23:17

ベストアンサー

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/09/05 00:01:26

ポイント60pt

やり方はいろいろありそうですし、計算式でもできると思いますが、

マクロでの例です。

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count <> 1 Then Exit Sub
    If Target.Value <> "集計列" Then Exit Sub

    Application.EnableEvents = False
    Dim i As Long
    Dim c As Long
    Dim r As Long
    
    c = Range("A1").End(xlToRight).Column
    r = Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To r
        Cells(i, c).Formula = "=SUM(" & Range(Cells(i, "C"), Cells(i, c - 1)).Address & ")"
    Next
    Application.EnableEvents = True
End Sub

シートモジュールに張り付けて、最終列に「集計列」と記入ください。

その列に計算式が挿入されます。

id:hananeko_0

コメントもありがとうございましたっ

Mookさんのご回答分を元に少し修正して(私の質問が分かりづらくて

すいませんでした・・トライしたらなんとか出来ましたっ

ありがとうございました!(*^_^*)

2008/09/07 23:23:01
  • id:Mook
    ちょっと仕様を勘違いしていたかもしれませんが、
    集計は各行単位でいいのでしょうか。
    それとも同じ商品名に対して、何らかの集計が必要でしたか?

    コードに対する補足ですが、データは行も列も途中に空白データが無いことを
    前提にしています。
    問題あるようでしたら、コメントください。

    今回はWorksheet_Change を使用しましたが、Application.EnableEbents の間だけを
    単独の関数として、任意のタイミングで呼び出すようにしても、同じ結果になります。
    ファイルの動きが遅くなるようでしたら、むしろその方が良いかもしれません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません