【VBA】行と列のグループ化と解除の方法

Excelでは、アウトライン機能を使って行や列をグループ化し、折りたたみ・展開できるようにすることで、大量のデータを見やすく整理できます。VBAを使えば、このグループ化や解除を自動で実行することができます。本記事では、行と列のグループ化・解除の基本から、折りたたみ方法やエラー回避まで解説します。


1. 行をグループ化する

特定の範囲の行をグループ化するには、以下のように記述します。

Sub 行をグループ化()
    '行2~5をグループ化
    Rows("2:5").Group
End Sub

このコードを実行すると、2~5行がグループ化され、左側に「-」ボタンが表示されます。


2. 列をグループ化する

列も同様にグループ化できます。

Sub 列をグループ化()
    '列B~Eをグループ化
    Columns("B:E").Group
End Sub

これにより、列B~Eがグループ化され、シート上部に折りたたみボタンが表示されます。


3. グループを解除する

グループ化を解除するには、.Ungroup を使用します。

行の解除

Sub 行のグループ解除()
    '行2~5のグループを解除
    Rows("2:5").Ungroup
End Sub

列の解除

Sub 列のグループ解除()
    '列B~Eのグループを解除
    Columns("B:E").Ungroup
End Sub

4. 折りたたみ・展開の操作

グループ化した範囲は、Outlineレベルを調整することで折りたたみ・展開できます。

折りたたむ

Sub 行を折りたたむ()
    '行2~5を折りたたむ
    Rows("2:5").ShowDetail = False
End Sub

展開する

Sub 行を展開する()
    '行2~5を展開する
    Rows("2:5").ShowDetail = True
End Sub

列の場合も同様に .ShowDetail を使います。


5. グループがない場合の回避方法

グループ解除を実行した際に、対象範囲がグループ化されていないとエラーになることがあります。
その場合は、On Error Resume Next を利用して回避します。

Sub 安全にグループ解除()
    On Error Resume Next
    Rows("2:5").Ungroup
    Columns("B:E").Ungroup
    On Error GoTo 0
End Sub

6. 便利な補足情報

  • アウトラインの自動作成
    Excelには「自動アウトライン」という機能もあり、数式を基に自動でグループ化できます。
    VBAでは以下のように操作します。
    ActiveSheet.Outline.AutomaticStyles = True ActiveSheet.Outline.SummaryRow = xlAbove '小計行の位置 ActiveSheet.Outline.SummaryColumn = xlLeft '小計列の位置
  • 複数グループの階層化
    行や列は複数階層でグループ化可能です。例えば、2~10行をまずグループ化し、その中で2~5行をさらにグループ化する、といった使い方も可能です。

7. まとめ

  • .Group で行や列をグループ化できる
  • .Ungroup で解除できる
  • .ShowDetail で折りたたみ・展開を制御可能
  • On Error Resume Next でエラーを回避できる
  • 階層化や自動アウトラインも応用できる

グループ化は見やすさやデータ整理に非常に役立つ機能なので、ぜひ業務の効率化に活用してください。

コメント

タイトルとURLをコピーしました