| 
    
     |  | みなさん、こんにちは。いきなりですが教えてください。 以下のような表があります。
 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
 
 |  |