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
でエラーを回避できる- 階層化や自動アウトラインも応用できる
グループ化は見やすさやデータ整理に非常に役立つ機能なので、ぜひ業務の効率化に活用してください。
コメント