回答編集履歴
1
コード追記
answer
CHANGED
@@ -21,4 +21,48 @@
|
|
21
21
|
SUBTOTAL関数を使うと連続したセル範囲を指定しても、集計行はとばして集計してくれますので楽できます。
|
22
22
|
[SUBTOTAL関数でさまざまな集計値を求める | Excel関数 | できるネット](https://dekiru.net/article/4366/)
|
23
23
|
|
24
|
-
とりあえずヒントだけ出しておきますので、上記を参考にチャレンジしてみてください。
|
24
|
+
とりあえずヒントだけ出しておきますので、上記を参考にチャレンジしてみてください。
|
25
|
+
|
26
|
+
---
|
27
|
+
サンプルコードを作成しましたので、ご参考に。
|
28
|
+
|
29
|
+
```vba
|
30
|
+
Sub test()
|
31
|
+
Dim s支社 As Long '支社開始行
|
32
|
+
Dim s部門 As Long '部門開始行
|
33
|
+
Dim r As Long
|
34
|
+
s支社 = 2
|
35
|
+
s部門 = 2
|
36
|
+
r = 2
|
37
|
+
|
38
|
+
Do Until Cells(r - 1, 1) = ""
|
39
|
+
If Cells(r, 5) <> Cells(s部門, 5) Then
|
40
|
+
Rows(r).Insert
|
41
|
+
|
42
|
+
Cells(r, 1).Value = Cells(s部門, 6) & "計"
|
43
|
+
Cells(r, 1).Resize(1, 19).Interior.Color = RGB(192, 192, 192)
|
44
|
+
Range(Cells(r, 7), Cells(r, 19)).Formula = "=SUBTOTAL(9,G" & s部門 & ":G" & r - 1 & ")"
|
45
|
+
r = r + 1
|
46
|
+
s部門 = r
|
47
|
+
End If
|
48
|
+
If Cells(r, 3) <> Cells(s支社, 3) Then
|
49
|
+
Rows(r).Insert
|
50
|
+
Cells(r, 1).Value = Cells(s支社, 4) & "計"
|
51
|
+
Cells(r, 1).Resize(1, 19).Interior.Color = RGB(226, 239, 219)
|
52
|
+
Range(Cells(r, 7), Cells(r, 19)).Formula = "=SUBTOTAL(9,G" & s支社 & ":G" & r - 1 & ")"
|
53
|
+
r = r + 1
|
54
|
+
s部門 = r
|
55
|
+
s支社 = r
|
56
|
+
End If
|
57
|
+
r = r + 1
|
58
|
+
Loop
|
59
|
+
|
60
|
+
r = r - 1
|
61
|
+
Cells(r, 1).Value = "総計"
|
62
|
+
Cells(r, 1).Resize(1, 19).Interior.Color = RGB(192, 226, 239)
|
63
|
+
Range(Cells(r, 7), Cells(r, 19)).Formula = "=SUBTOTAL(9,G2:G" & r - 1 & ")"
|
64
|
+
End Sub
|
65
|
+
```
|
66
|
+
|
67
|
+
実行結果
|
68
|
+

|