こんなことできますか?
エクセルの表が各シートに一つずつあります。
B列からR列まで使用しています。
始まりは3行目で見出し行です。
データは4行目以降ですが、これは各シートごとに最終行は異なります。だいたい120行から200行程度です。
途中に空白はありません。
この表はS列の数値(12種類)により分類され並べ替えてあります。
やりたいのは、S列の数値を見て、分類(同じ数字)ごとに集計する行を追加したいのです。
集計する列は、D~K列だけです。
そして、最終行に全部の合計も出したいのです。
ただ、量が多いのと、頻繁に行なう作業なのでマクロでささっと出来ないかと思います。
どなたかどうすればよいか教えてください。
なにとぞお願いします。
No.3
- 回答日時:
VBAで
Sub test01()
Dim s(30) '小計をいれる配列
Dim st(30) '総計をいれる配列
'---データスタート行のキーコード
m = Cells(4, "S")
'----D列-K列の小計・総計エリアクリア
For c = 4 To 11
s(c) = 0
st(c) = 0
Next c
'=================1行づつ繰り返し
i = 4
While (Cells(i, "S") <> "")
If Cells(i, "S") = m Then
'--前行とS列で変わらない場合は足しこみ
For c = 4 To 11
s(c) = s(c) + Cells(i, c)
Next c
'----変わった
Else
Cells(i, "S").EntireRow.Insert '行挿入
'----小計を挿入行のD列-K列にセット
'---D列-K列の小計をD列-K列の総合計に足しこみ
For c = 4 To 11
Cells(i, c) = s(c)
st(c) = st(c) + s(c)
s(c) = 0
Next c
'----行挿入したので行ポインタiと最下行dを1行下へづらす
i = i + 1
'----変わった最初行D列-K列を足しこみ
For c = 4 To 11
s(c) = s(c) + Cells(i, c)
Next c
'----現在のキーコードを変更
m = Cells(i, "S")
End If
i = i + 1
Wend
'=================最終行後
'----小計を最終行の次行のD列-K列にセット
'---D列-K列の小計をD列-K列の総合計に足しこみ
For c = 4 To 11
Cells(i, c) = s(c)
st(c) = st(c) + s(c)
s(c) = 0
Next c
'----総合計をD列-K列にセット
i = i + 1
For c = 4 To 11
Cells(i, c) = st(c)
Next c
End Sub
S列のキーコードが変るたびに行挿入し、そこのD-K列小計をセットしている。
40行程度でテスト済み。
No.2
- 回答日時:
VBAですと、
Sub total()
Dim ws As Worksheet, i As Long, ii As Long, lastS As Long
For Each ws In Sheets
With ws
i = 4
Do Until IsEmpty(.Cells(i, 19))
lastS = .Range("s65536").End(xlUp).Row
If lastS < i + 1 Then
lastS = i + 1
End If
For ii = i + 1 To lastS
If IsEmpty(.Cells(ii, 19)) Then
.Cells(ii, 3).Value = "小計"
.Cells(ii, 4).FormulaR1C1 = _
"=subtotal(9,r" & i & "c:r[-1]c)"
.Cells(ii, 4).AutoFill _
Destination:=ws.Range("d" & ii & ":k" & ii)
ElseIf .Cells(i, 19) <> .Cells(ii, 19) Then
.Rows(ii).Insert
.Cells(ii, 3).Value = "小計"
.Cells(ii, 4).FormulaR1C1 = _
"=subtotal(9,r" & i & "c:r[-1]c)"
.Cells(ii, 4).AutoFill _
Destination:=ws.Range("d" & ii & ":k" & ii)
lastS = .Range("s65536").End(xlUp).Row
i = ii + 1
Exit For
Else
End If
Next
i = ii + 1
Loop
.Cells(lastS + 1, 3).Value = "合計"
With .Cells(lastS + 1, 4)
.FormulaR1C1 = "=subtotal(9,r5c:r[-1]c)"
.AutoFill Destination:=ws.Range("d" & lastS + 1 & ":k" & lastS + 1)
End With
End With
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルで最下行にデータを追加するVBA 6 2023/05/09 09:30
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
エクセルで行を挿入し、小計、合計を出したい
Visual Basic(VBA)
-
エクセル マクロで数値が変った時行挿入できますか
Excel(エクセル)
-
EXCELマクロを使い、空白行ではさまれた範囲の数字を合計
Excel(エクセル)
-
-
4
VBA 得意先ごと且つ日付ごとに数値を集計したい
その他(Microsoft Office)
-
5
月が変わったら自動でシートが複製される方法を教えてください。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LEFT関数とIF関数の組み合わせ...
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VBA 指定した列にある日時デー...
-
エクセルマクロPrivate Subを複...
-
CSVファイルの「0落ち」にVBA
-
Accessのレポートで繰り返し表...
-
【Excel VBA】セルで列番号を指...
-
エクセルで最初の行や列を開け...
-
エクセル 重複したデータを別...
-
<急募>エクセルデータの関数を...
-
アクセス 取り込み時に、桁数(...
-
Excelの降順の仕方
-
csvデータをエクセルで加工して...
-
VLOOKUPの列番号の最大は?
-
エクセル 1つのシートを日付で...
-
エクセルで以下の条件付きの乱...
-
シェイプの個数を調べるには・・・
-
VBA Splitで「引数の数が一致...
-
例えば、AさんからGさんまでがA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで住所を県と市・郡と...
-
Excelの行数、列数を増やしたい...
-
エクセルで複数列の検索をマク...
-
エクセルマクロの組み方
-
Alt+Shift+↑を一括で行うには、...
-
えABのある列って
-
エクセルのソートで、数字より...
-
エクセル マクロ 範囲指定で...
-
VBAで結合セルを転記する法を教...
-
VBAで別ブックの列を検索し、該...
-
エクセルマクロPrivate Subを複...
-
列方向、行方向の定義
-
リストからデータを紐付けしたい
-
Accessのレポートで繰り返し表...
おすすめ情報