先回「Excel テーブル(1)」では、シート上のデータ範囲から「テーブル」を作成し、項目ごとにフィルタ操作や集計操作ができることをお話ししました。
今回は「テーブル」での「構造化参照」の使い方についてご紹介します。
例として、下図のテーブルを使ってみます。
これは A1~F7セルにそれぞれの値を入力したセル範囲の中(どこでも)を選択しておき、ショートカットキー [Ctrl]+[T]をタイプして作成したテーブルです。
もちろん、前回ご紹介したメニューから操作して作成しても構いませんが、このショートカットキーを覚えておくと便利です。
さて、このテーブル内のどこかを選択すると [テーブルデザイン]タブが現れ、その左端の [プロパティ]グループにテーブル名が表示されています。(下図)
ここでは「テーブル1」と名前が付けられています。
これは任意の名前に変更しても構いません。
それでは、テーブル内に数式を入れてみます。
D2セルを選択し、「=」と打ち B2セルをクリックします。
すると、数式バーには「=[@単価]」と表示されます。
続いて「*」と打ち C2セルをクリックします。
数式バーには「=[@単価]*[@数量]」と表示されました。
このまま「Enter」すると「金額」列の C2~C7セルが一度に計算されます。
この [@単価]、[@数量] というのは何でしょう?
テーブルの構造化参照で「@」は「この行の」という意味で、[@単価] は「この数式が入力されている同じ行にある「単価」」、つまり「この行の「単価」欄」という意味になります。
というわけで、C2~C7セルにはすべて「=[@単価]*[@数量]」と入力されていますが、それぞれの値で計算されるので、異なる値が表示されています。
続いて「消費税」の計算をしてみましょう。
消費税率 10% をそのまま数式に書いてもよいですが、ここでは他のシート「Sheet10」の F1セルに記載されている「10%」を参照してみます。
E1セルに「=」と打ち D2セルを選択すると数式バーには「=[@金額]」と表示されます。
続いて「*」と打ち「Sheet10」シートの F1セルを選択、さらに「F4」キーを打って絶対参照とします。
数式バーには「=[@金額]*Sheet10!$F$1」と表示され、「Enter」すると「消費税」列の E2~E7セルに計算された値が一度に表示されます。(下図)
「Sheet10」シートの F1セルに「消費税率」と名前付けすれば、この数式も「=[@金額]*消費税率」と書くことができます。
テーブル外のデータやデータ範囲であっても「名前の定義」を併用すれば、セル番地を参照しなくとも数式を表現することができます。
次に、「合計金額」列の計算をします。
F2セルを選択し「オートSUM」ボタンを押すと、B2~E2セルまでが計算対象としようとしますので、D2~E2セルを指定すると数式バーには「=SUM(テーブル1[@[金額]:[消費税]])」と表示されます。
このまま「Enter」すると F2~F7セルが一気に計算され値が表示されます。(下図)
「SUM」関数の引数を見ると、「テーブル1」の「金額」列から「消費税」列までのこの行の値、という意味になります。
テーブルにおけるセル範囲の表記にも慣れておくとよろしいでしょう。
最後に、テーブルに 1列追加してみます。
上図のテーブルの右下に青い鍵括弧のようなマークがありますが、これをマウスで右側にドラッグして 1列追加します。
追加された G列の項目行 G1を選択し「順位」と入力します。
G1セルに「=RANK.EQ(」と打ち D2セルを選択すると、数式バーには「=RANK.EQ([@金額]」と表示されます。
続いて「,」と打ち D2~D7セルを選択し、最後に「,0)」として“降順”を指定します。
数式バーには「=RANK.EQ([@金額],[金額],0)」と表示されており、このまま「Enter」して G2~G7セルに「金額」の順位が表示されます。(下図)
これらの例でお分かりいただけるように、構造化参照で指定されている場合は、絶対参照を設定する必要がありません。
また、最後の例のようにテーブルを広げて列や行を追加しても数式を修正する必要はありません。
今回は「構造化参照」のイメージを簡単にお話ししましたが、より詳細に知りたい方は Microsoftのサポートページ「Excel テーブルでの構造化参照の使い方」をご参照ください。
小さいデータにも適用できますが、さらに大きな「データベース」というようなデータセット群になるとこの「テーブル」機能と「構造化参照」のメリットがより現れてきます。