|
jakaさん、おはようございます。
ご教示の内容を確認させていただきました。
当初の質問の確認をさせていただきますが、下図のようにいくつかのグループが
あります。(7〜10行目、14〜15行目)それらの各グループの各列の数値の合計と
件数を算出します。グループの最終行の次の行に件数の合計を、そして次の行に
数値の合計を、最終的に全部の合計を、最後のグループの合計の次の行に
算出させたいということでした。keinさんのご教示の内容を試させて
いただきましたが、以下のようになりました。
まず、最初のグループについてですが、G列の件数は11行目に出ましたが、数値の合計
は、その件数も含まれた合計になってしまいますので、この件数を含めず算出したいのです。
それから、H〜N列の件数の合計も算出させたいのです。A〜F列は文字列が入力されていますので
これらの計は必要ありません。
次に2つ目のグループですが、14〜15行のデータの件数は16行目に、そして全体の件数の合計が
17行目に出ていますので問題ありませんが、これもやはり、H〜N列の件数計がでません。
18行目、19行目も同様です。
私的には、例えば最初のグループでいうと、G列7〜10行目の件数計をG列11行目に(4です)、
数値の合計を12行目に(265です)、次のグループでは、G列14〜15行目の件数計を16行目に
(2です)、数値の合計を17行目に(15です)、そして全体の数値の合計を18行目に(6です)、
数値の合計を19行目に(280です)算出し、他のH列〜N列も同様にしたいのです。
私も色々試し、四苦八苦しているところですが、わかりません。
申し訳ありませんが、またのご教授をお願い致します。
A B C D E F G H I J K L M N O P Q
7 100 10 2 3 5 5
8 110 2 7
9 2 2 6
10 53 3 4
11 4
12 0 0 0 0 0 0 269 13 4 3 2 4 5 18
13
14 10 2 3 1
15 5 5 5
16 2 0 0 0 0 0 0 0
17 6 0 0 0 0 0 0 0
18 0 0 0 0 0 0 23 2 3 5 5 0 0 1 0 0 0 0 ...
19 0 0 0 0 0 0 292 2 3 5 5 0 0 1 0 0 0 0 ...
▼Jaka さん:
>こんにちは。
>現在までの状況を把握してません。
>
>また、↓入ってません。
>>7〜10行までにある数値の件数を11行目に、金額の合計を12行目に、それぞれ
>>各列毎に算出します。
>
>
>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(, 7).Select '←確認用に1度入れてみるといいです。
>
> 対象データ = .Cells(i, "G").Resize(, 6).Value
> If 対象データ(1, 1) = "" Then
> If ブランク Then
> .Cells(i, "G").Resize(, 7).Value = 小計
> .Cells(i, "G").Resize(, 7).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 6
> 小計(j) = 小計(j) + Val(対象データ(1, j))
> Next j
> End If
> End If
> Next i
> .Cells(i, "G").Resize(, 7).Value = 合計
> .Cells(i, "G").Resize(, 7).Font.Bold = True
> End With
>End Sub
>
>**********************
>Sub sgh()
> Dim Cure As Range, Gcure As Range, STR As Range, GK() As Long
> Dim CCR As Long
> Set STR = Range("G7")
> CCR = STR.End(xlDown).End(xlToRight).Column - STR.Column + 1
> ReDim GK(1 To CCR)
> Do Until STR.End(xlDown).Row = 65536
> Set STR = STR.End(xlDown)
> With STR 'Range("G8")
> Set Gcure = Nothing
> Set Cure = .CurrentRegion
> With Cure
> Set Gcure = .Offset(.Rows.Count).Resize(1)
> For i = 1 To .Cells.Columns.Count
> Gcure.Cells(i).Value = Application.Sum(.Cells.Columns(i))
> Gcure.Cells(i).Font.Bold = True
> GK(i) = GK(i) + Application.Sum(.Cells.Columns(i))
> Next
> End With
> End With
> Set STR = Gcure.Cells(i)
> Set Cure = Nothing
> Loop
> Gcure.Cells(i).Resize(, CCR).Value = GK
> Gcure.Cells(i).Resize(, CCR).Font.Bold = True
> Set STR = Nothing
> Set Gcure = Nothing
> Erase GK
> End
>End Sub
|
|