グループ化(アウトライン)
Excelの「グループ化」は、行や列を折りたたんで見やすくする機能です。VBAでは Outline オブジェクトを使って、行や列をまとめたり、展開/折りたたみを制御できます。初心者向けに最短コードから応用例まで整理しました。
基本:行をグループ化する
Sub GroupRows_Basic()
'2〜5行をグループ化(左に「+」が出て折りたためる)
Rows("2:5").Group
End Sub
VB- ポイント:
Rows("開始:終了").Groupで行をまとめる。- グループ化すると左端に「+/-」ボタンが表示され、折りたたみ可能になる。
列をグループ化する
Sub GroupColumns_Basic()
'C〜E列をグループ化(上に「+」が出て折りたためる)
Columns("C:E").Group
End Sub
VB- ポイント:
Columns("開始:終了").Groupで列をまとめる。- 列のグループ化は横方向に「+/-」が表示される。
グループ化の解除(Ungroup)
Sub UngroupRows()
Rows("2:5").Ungroup
End Sub
Sub UngroupColumns()
Columns("C:E").Ungroup
End Sub
VB- ポイント:
Ungroupでグループ化を解除。- 範囲を指定して解除するのが基本。
グループの展開/折りたたみ制御
Sub CollapseExpandGroups()
'すべてのグループを折りたたむ
ActiveSheet.Outline.ShowLevels RowLevels:=1
'すべてのグループを展開
ActiveSheet.Outline.ShowLevels RowLevels:=2
End Sub
VB- ポイント:
ShowLevelsで表示レベルを制御。RowLevelsやColumnLevelsを指定して、どの階層まで展開するかを決められる。
例題で練習
例題1:月別データをグループ化して見やすくする
Sub Example_GroupMonthlyData()
'2〜32行を「1月」としてグループ化
Rows("2:32").Group
'33〜60行を「2月」としてグループ化
Rows("33:60").Group
End Sub
VB例題2:売上表の詳細列をグループ化して折りたたみ
Sub Example_GroupDetailColumns()
'詳細列(C〜F)をグループ化
Columns("C:F").Group
'見出し列(A,B)と合計列(G)は常に見える
End Sub
VB例題3:グループ化した行を一括で折りたたむ
Sub Example_CollapseAllGroups()
ActiveSheet.Outline.ShowLevels RowLevels:=1
End Sub
VB実務の落とし穴と対策
- ソートやフィルタとの併用: グループ化はアウトライン機能。フィルタや並べ替えと同時に使うと見た目が混乱しやすい。
- 解除忘れ: Ungroup を入れないと、次の処理で意図しない折りたたみが残る。
- 階層構造: グループ化は入れ子にできる。ShowLevels で階層を制御できるが、複雑になると管理が難しい。
- 印刷時: 折りたたんだ状態でも印刷は「展開された状態」で出ることがある。印刷前に展開レベルを指定するのが安全。
