|
みなさん、こんにちは。いきなりですが教えてください。
以下のような表があります。
G〜M列に数値(シリアル値)が入力されており、それらがいくつもの
グループになっています。(A〜F列には文字が入力されています。)
それらのグループの列の合計と件数を算出したく、下のコードを
使ったのですが、H〜M列の合計はでるのですが、H列の合計はH列の件数が
足された形で算出されてしまいます。
私のイメージとしては、例えば最初のグループで言うと、11行目に件数が、12行目に
合計が算出し、他のグループも同様にしたいのです。一番最終行には、トータルの
合計と件数を出力させます。
どうやってもうまくいきません。どなたかご教授をお願い致します。
ちなみに、このコードは過去の投稿を参考にさせてもらっています。
A B C D E F G H I J K L M
1〜6行は空白です。
7 100 2 50 60 78 80 90
8 90 11 13 25 22 11 3
9 5 5 5 5 5 5 5
10 1 2 3 4 4 5 1
11
12
13
14 2 11 15 10 80 91 2
15 10 4 5 6 6 6 6
16 ・
17 ・
18 ・
19
------------------------------------------------------------------
Sub PLAS()
Dim i As Long
Dim j As Long
Dim 先頭行 As Long
Dim 最終行 As Long
Dim 対象データ As Variant
Dim 合計(5) As Variant
Dim 小計(5) As Variant
Dim ブランク As Boolean
With ActiveSheet
先頭行 = 7
最終行 = .Cells(65536, "G").End(xlUp).ROW + 1
For i = 先頭行 To 最終行
対象データ = .Cells(i, "G").Resize(, 6).Value
If 対象データ(1, 1) = "" Then
If ブランク Then
.Cells(i, "G").Resize(, 6).Value = 小計
.Cells(i, "G").Resize(, 6).Font.Bold = True
For j = 0 To 5
合計(j) = 合計(j) + 小計(j)
小計(j) = 0
Next j
ブランク = False
End If
Else
If 対象データ(1, 1) <> "" Then
ブランク = True
If IsNumeric(Trim(対象データ(1, 1))) Then
小計(0) = 小計(0) + 1
End If
For j = 0 To 5
小計(j) = 小計(j) + Val(対象データ(1, 1 + j))
Next j
End If
End If
Next i
.Cells(i, "G").Resize(, 6).Value = 合計
.Cells(i, "G").Resize(, 6).Font.Bold = True
End With
End Sub
|
|