人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelVBAです。

商品名ごとに集計をしたいのですが、毎月その月の分が追加されるので
集計するフィールド(列)を指定出来ないため、最終列(小計)まで
自動取得してから集計を実行したいのですが、どのようにすれば良いでしょうか?

・集計する範囲を自動取得(B列から最終列まで)
・最終列=小計の列

添付を例にすると、次月作成する時は「7月」分が小計列の前に入っています。
数か月先まで、毎月作成するため、列は指定せずに自動取得する方法を
教えていただけますでしょうか?

よろしくお願い致します。

1220976292
●拡大する

●質問者: hananeko_0
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:フィールド 作成 自動
○ 状態 :終了
└ 回答数 : 1/2件

▽最新の回答へ

1 ● Mook
●100ポイント ベストアンサー

とりあえず、コメントした内容でのサンプルです。

Sub CalcSum()
 Dim lastRow As Long, lastCol As Long
 lastRow = Range("A" & Rows.Count).End(xlUp).Row
 lastCol = Range("IV1").End(xlToLeft).Column
 
 Dim i As Long, j As Long, cLine As Long, pLine As Long
 Dim lastTitle As String
 
 lastTitle = Range("A2").Value
 Cells(1, lastCol + 1).Value = "小計"
 cLine = 2
 pLine = 2
 
 Do While Cells(cLine, "A").Value <> ""
'---- 行単位の小計の計算
 Cells(cLine, lastCol + 1).Formula = "=SUM(" & Range(Cells(cLine, 2), Cells(cLine, lastCol)).Address & ")"
 
'---- 列単位の小計の計算
 If Cells(cLine, "A").Value <> lastTitle Then
 Rows(cLine - 1).Copy
 Rows(cLine).Insert Shift:=xlDown
 Application.CutCopyMode = False
 
 Cells(cLine, "A").Value = Cells(cLine, "A").Value & "小計"
 Range(Cells(cLine, 1), Cells(cLine, lastCol + 1)).Interior.ColorIndex = 20
 For i = 2 To lastCol
 Cells(cLine, i).Formula = "=SUBTOTAL(9," & Range(Cells(pLine, i), Cells(cLine - 1, i)).Address & ")"
 Next
 Cells(cLine, lastCol + 1).Formula = "=SUBTOTAL(9," & Range(Cells(pLine, lastCol + 1), Cells(cLine - 1, lastCol + 1)).Address & ")"
 pLine = cLine + 1
 cLine = cLine + 1
 lastTitle = Cells(cLine, "A").Value
 End If
 cLine = cLine + 1
 Loop

'---- 総計の計算
 Cells(cLine, "A").Value = Cells(cLine, "A").Value & "総計"
 For i = 2 To lastCol + 1
 Cells(cLine, i).Formula = "=SUBTOTAL(9," & Range(Cells(2, i), Cells(cLine - 1, i)).Address & ")"
 Next
 Range(Cells(cLine, 1), Cells(cLine, lastCol + 1)).Interior.ColorIndex = 24
 
'---- 罫線の描画
 With Range(Cells(1, 1), Cells(cLine, lastCol + 1)).Borders
 .LineStyle = xlContinuous
 .Weight = xlThin
 .ColorIndex = xlAutomatic
 End With
End Sub
◎質問者からの返答

ご回答ありがとうございますっ

列数を色々変えて確認したところ、全て動作OKでした!

ところが、商品の3つ目(添付でいうとスナック)の小計行が挿入されず

末の商品名の小計行なしで、「総計行」が入ります。

この部分だけでしたので、自分でなんとか・・とトライしたのですが

わかりませんでした・・・

お手数ですが教えていただけますでしょうか?すいません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ