- 2023年4月25日
はじめに
こんにちは、ユニフェイスの上村です!
普段から利用する機会の多い Excel ですが、本来「表計算ソフト」ということもあって、行列から成る表形式のデータを扱うことが多々あるかと思います。
Excel では表を「テーブル」という形式で扱うことができるのですが、「構造化参照」といわれる仕組みを利用することで、非常に「便利」で「分かり易く」表データを使えるようになります!
(上記の仕組みは Excel 2007 には既にあったようで、最近まで全然知りませんでした;;)
参考: Excel テーブルでの構造化参照の使い方 – Microsoft サポート
そこで今回は、テーブル化した際のメリ・デメを先に簡単に紹介しつつ、構造化参照とは何かを説明していきたいと思います!
テーブル化する方法
実際に利用する例で説明した方が分かり易いのでサンプルを作成しました。
都道府県ごとに県庁所在地を保持する表データを作成したので、こちらをテーブル化します。
表内のどこでもいいので、セルを選択した状態で「Ctrl + T」を押すと、範囲が自動的に選択され「テーブルの作成」ウィンドウが表示されるので「OK」を押します。

テーブル化の手順はこれだけで完了です!

また、テーブルの一部を選択すると「テーブルデザイン」というタブが表示されるため、それを選択すると名前を入力できるようになります。

このほか、テーブルの範囲を広げたい場合はテーブル範囲の右下に小さな三角マーク▼があるので、それをドラッグすることで、マウス操作で範囲を拡張できます。

テーブル化の利点
① 表全体はテーブル名、列指定時は列名が使用できる(これが後述する構造化参照)
※「条件付き書式」や「名前の定義」、「ピボットテーブル」等の範囲指定には非対応
② 行を追加した時、追加行の上の行に指定されている「書式」や「関数」を自動で引き継ぐ
③ テーブル名で表の範囲を指定している場合、表の範囲が変わっても自動で反映される
※「A1:C10」のような範囲指定時、最後の列や行を足した時に反映されない恐れがある
④ テーブル内のセルを選択状態でスクロール時、列名が上部に固定表示される(おまけ程度)
⑤ VBAで ListObject が利用できる ※ 今回は割愛
◇ 参考URL:
・【Excel】表を「テーブル」にするだけで作業効率がアップ! エクセルの3つのテクを活用するだけです – 窓の杜
・テーブル操作の概要(ListObject)|VBA入門
テーブル化の制約
① セルの結合ができない
② 空白の列名や、重複する列名は使用できない
③ シートの保護をかけるとテーブル特有の機能が使用できない
④ それぞれテーブルがあるシートを複数指定した状態で[移動またはコピー]操作ができない
◇ 参考URL:
・表をテーブルに変換したら制限されること – 初心者のためのOffice講座
構造化参照とは
先ほど作成したテーブルに対して、構造化参照を利用して「北海道」の県庁所在地を取得してみます。
普段だと LOOKUP 関数を用いて検索する場合、範囲の指定は列番号を固定してセル番地を指定するかと思います。(シート名!$B4:$B10 など)

それに対して、構造化参照の場合は【テーブル名[列名]】という書き方ができるようになります。
これにより、どのようなデータを対象にしているかを、関数の内容を見ただけで判断できます!
この他、テーブルの範囲は「名前の管理」に登録され、公開範囲がブック全体となっているため、他シートの内容を参照する場合でも、シート名を記載せずに参照できるようになります。

構造化参照の書き方一覧
上記例の書き方の他、テーブルのどの範囲を指定するかによって書き方が異なります。
同じ行のセル(利用頻度:MAX)
テーブル名[@列名] ※ 同じテーブル内であればテーブル名は省略可能

連続した複数列(利用頻度:中)
テーブル名[[From列名]:[To列名]]

※ 以降は関数利用時にはあまり使用する機会はなさそうですが念のため
列見出し、データ、および合計を含む、テーブル全体
テーブル名[#すべて]

見出し行のみ
テーブル名[#見出し]

データ行のみ
テーブル名[#データ]

集計行のみ
テーブル名[#集計]

◇ 参考URL:
・Excel テーブルでの構造化参照の使い方 – Microsoft サポート
さいごに
Excel 関数が多用された Excel ファイルは、何か動かなかったとき、手を加える必要があるとき、誰かに引き継ぐ必要があるとき・・・などなど、後から見て何が行われているかを把握するのは非常に困難です。
上記の仕組みを活用すれば、比較的簡単な手間で可読性を格段に向上することができますので、手軽に一度試してみてください!