Excel VBA 逆引き集 | グループ化

Excel VBA
スポンサーリンク

グループ化(アウトライン)

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 で表示レベルを制御。
    • RowLevelsColumnLevels を指定して、どの階層まで展開するかを決められる。

例題で練習

例題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 で階層を制御できるが、複雑になると管理が難しい。
  • 印刷時: 折りたたんだ状態でも印刷は「展開された状態」で出ることがある。印刷前に展開レベルを指定するのが安全。
タイトルとURLをコピーしました