Excelで表を「テーブル」にすると、数式が急に
=[@数量]*[@単価]
のような形になることがあります。
これはエラーではなく、構造化参照というExcelテーブル専用の参照方法です。
構造化参照とは
通常のExcel数式では、
=C2*D2
のようにセル番地を使います。
一方、テーブルでは、
=[@数量]*[@単価]
のように列名で参照できます。
Microsoftも、テーブル名と列名の組み合わせを構造化参照と説明しています。
@ は「この行」
テーブル内で、
[@数量]
と書かれていれば、
今この数式がある行の「数量」列
を意味します。
たとえば5行目なら数量列の5行目、10行目なら10行目を参照します。
セル番地を意識せず、列の意味で読めるのが利点です。
テーブル外からはテーブル名を付ける
テーブル名が Sales、列名が 売上 なら、
=SUM(Sales[売上])
のように書けます。
普通の範囲なら、
=SUM(C2:C500)
などになります。
構造化参照は、行が増減したときもテーブル範囲に合わせて調整されます。
#Data、#Headers、#Totals
構造化参照ではテーブルのどの部分を使うかも指定できます。
#Data:データ部分#Headers:見出し#Totals:集計行#All:見出し・データ・集計行を含む全体
たとえば、
Sales[[#Data],[売上]]
なら、Salesテーブルの売上列のデータ部分です。
行追加時に参照範囲が伸びる
通常の数式で C2:C100 と固定していると、101行目を追加しても集計に入らないことがあります。
テーブル列を参照していれば、新しい行がテーブルへ追加されたときに参照対象も調整されます。
これが、毎月行が増える実務表と相性がよい理由の1つです。
列名を変えたらどうなる?
Microsoftの現行案内では、テーブル名や列名を変更すると、そのテーブルや列を使っている構造化参照もブック内で更新されます。
ただし、列名を意味のない名前へ変えると、数式の読みやすさも落ちます。
列1 より 売上金額 のような名前の方が実務では追いやすくなります。
いつも構造化参照が正解ではない
印刷レイアウト中心の帳票や、一時的な小さな計算なら通常のセル参照の方が簡単な場合もあります。
一方、
- 行が増える
- 列の意味が決まっている
- 後で集計・Power Queryへつなぐ
表では構造化参照が役立ちます。
重要なのは記号を暗記することではなく、セル位置ではなく列の意味で数式を読める仕組みだと理解することです。
参考
- Microsoft Support: Excelテーブルでの構造化参照の使い方
https://support.microsoft.com/ja-jp/Excel/using-structured-references-with-excel-tables
