アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんなことできますか?
エクセルの表が各シートに一つずつあります。

B列からR列まで使用しています。
始まりは3行目で見出し行です。
データは4行目以降ですが、これは各シートごとに最終行は異なります。だいたい120行から200行程度です。
途中に空白はありません。
この表はS列の数値(12種類)により分類され並べ替えてあります。

やりたいのは、S列の数値を見て、分類(同じ数字)ごとに集計する行を追加したいのです。
集計する列は、D~K列だけです。
そして、最終行に全部の合計も出したいのです。

ただ、量が多いのと、頻繁に行なう作業なのでマクロでささっと出来ないかと思います。
どなたかどうすればよいか教えてください。
なにとぞお願いします。

A 回答 (3件)

マクロを使わなくても、


メニューの「データ」~「集計」でできると思います。
    • good
    • 0
この回答へのお礼

こんな便利な機能があったんですね。
眼からウロコです。

ありがとうございました。

お礼日時:2004/12/21 10:30

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行程度でテスト済み。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2004/12/21 10:31

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
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2004/12/21 10:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!