Excelでは、表形式のデータをテーブル形式(ListObject)に変換することで、フィルター・並べ替え・構造化参照など多くの機能を活用できるようになります。
本記事では、VBAを使って既存のセル範囲をテーブル化する処理と、テーブルに任意の名前を付ける方法についてご紹介いたします。
目次
想定される用途
- データ入力された範囲をテーブルに自動変換し、整理・分析しやすくしたい。
- テーブル名をVBAで設定して、他のマクロから参照しやすくしたい。
- ルーティン作業を自動化して、作業ミスや手間を減らしたい。
VBAコードの例
以下のコードでは、セル範囲 B3:E8
をテーブル形式に変換し、そのテーブルに「顧客一覧」という名前を付けています。
Sub ConvertRangeToTable()
Dim dataArea As Range
Dim tbl As ListObject
' データ範囲の設定(見出し含む)
Set dataArea = ActiveSheet.Range("B3:E8")
' テーブルの作成と名前の設定
Set tbl = ActiveSheet.ListObjects.Add(SourceType:=xlSrcRange, _
Source:=dataArea, _
XlListObjectHasHeaders:=xlYes)
tbl.Name = "顧客一覧"
End Sub
コードのポイント解説
項目 | 内容 |
---|---|
ListObjects.Add(...) | 指定範囲をテーブルとして挿入します。 |
SourceType:=xlSrcRange | 範囲を指定して追加することを明示します。 |
XlListObjectHasHeaders:=xlYes | 見出し行が含まれていることを指定します。 |
.Name = "顧客一覧" | 作成したテーブルに任意の名前を設定します。 |
注意点
- 見出し行を必ず含めて範囲を指定してください。
xlYes
を指定している場合、1行目は列名として認識されます。 - テーブル名は一意である必要があります。すでに同名のテーブルがあるとエラーになります。
- テーブルに変換した後は、構造化参照が有効になります(例:
=顧客一覧[年齢]
のような数式)。
応用例
- 複数のシートで一括テーブル化するマクロ。
- テーブルを作成後に色やスタイルを自動で適用。
- 作成したテーブルから自動的に集計・グラフ化。
まとめ
VBAを使えば、任意のセル範囲をワンクリックでテーブル形式に変換し、見た目と機能を大幅に向上させることができます。
さらにテーブル名を指定しておけば、後続処理や他のマクロからの呼び出しも簡単になります。
表形式のデータをExcelの「テーブル」として活用したい方は、ぜひ本記事の手法をご利用ください。