teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コード追記

2021/12/14 14:39

投稿

hatena19
hatena19

スコア34367

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
+ ![イメージ説明](a06d99ae1b1bfeda87923537fd8bfb4f.png)