いまさら聞けないExcelの使い方講座

【Excel】データの活用は表の「テーブル」化から始まる! 見栄えも効率も大幅アップ

「テーブル」で作業効率をアップしよう

「名前の定義」から一歩進化! 「テーブル」で表の管理をもっと便利に

 前回の記事では、セル範囲や定数に「名前」を付けて数式を読みやすくするテクニックを紹介しました。確かに「売上」や「商品マスタ」といった名前を付けておけば、数式も簡略化できて参照範囲を間違えるリスクも減ります。とても便利な機能ですが、「名前の定義」だけでは対応しきれない場面が出てきます。

 例えば、新しい列を追加したら数式を修正してコピーし直す必要がある、背景色の“しましま”を塗り直さないといけないといった細かい作業が積み重なりがちです。こうしたストレスを解消してくれるのが、今回取り上げる「テーブル」機能です。

テーブルで管理している売上一覧の例。セルC2にはテーブルのフィールド(列)を参照する数式が入力されています

 データの追加や削除に強く、数式も自動でコピーされるメリットがあります。さらに見た目も整う「名前の定義」の進化版といえる存在です。例えば、セルC2に入力されている数式は以下の通りです。

=XLOOKUP([@商品コード],商品マスタ[商品コード],商品マスタ[商品名])

 これは「構造化参照」と呼ばれる参照方式です。テーブルを利用する場合、表は“テーブル”、含まれる列は“フィールド”として認識され、数式中でも利用できる仕組みになっています。「テーブル」にわかりやすい名前を付けておくだけで、表の管理が圧倒的に楽になります。

列名が「フィールド」の名前になる

 以下は、XLOOKUP関数を使って、[商品マスタ]シートにあるマスタデータを参照している例です。現状は問題なく動作していますが、例えば、商品が増えた場合は数式を修正する必要がありますよね。このような問題も「テーブル」で解決できます。

XLOOKUP関数で[商品マスタ]シートにあるマスタデータを参照しています(①)
例えば、新しい商品を追加した場合(②)、XLOOKUP関数の数式を修正する手間がかかります

 さっそく表をテーブル化してみましょう。[挿入]タブにある[テーブル]をクリックしても構いませんが、[Ctrl]+[T]が簡単です。表の見出しを「テーブルの見出し」、つまりフィールド名にするかどうかを確認されるので、[OK]をクリックするだけです。

 表をテーブルに変換した場合は、わかりやすい名前を付けておきます。これだけで表と列名に“名前”が登録されます。

表内のセルを選択して、[Ctrl]+[T]キーを押します(③)。表の範囲は自動的に認識されるので、[先頭行をテーブルの見出しとして使用する](④)にチェックが付いていることを確認して[OK](⑤)をクリックします
テーブルに変換されて[テーブルデザイン]タブに切り替わります(⑥)
任意のテーブル名に変更します(⑦)。ここでは「売上」と名前を付けました

 上記の手順で表示された「#スピル!」エラーは、元の数式の問題です。「商品マスタ!$B$2:$C$5」と横方向にスピルさせていた数式は使えないという意味です。

=XLOOKUP(B2,商品マスタ!$A$2:$A$5,商品マスタ!$B$2:$C$5)

 テーブルでは、列(フィールド)方向に対して処理されるため、横方向のスピルは成り立ちません。数式は入力し直すので、いったん消去しておきます。同様に[商品マスタ]シートの表も同様にテーブル化しておきます。

表内のセルを選択して、[Ctrl]+[T]キーを押します(⑧)。[先頭行をテーブルの見出しとして使用する](⑨)にチェックが付いていることを確認して[OK](⑩)をクリックします
任意のテーブル名に変更します(⑪)。ここでは「商品マスタ」と名前を付けました

数式は自動的に構造化参照に変換される

 後は、XLOOKUP関数の数式を入力するだけです。特別な操作をする必要はなく、参照するセル範囲をドラッグして指定するだけで、構造化参照に変換されます。

 横方向のスピルはNGなので、1列ずつ指定することになりますが、この構造化参照のおかげで一覧から選択できるようになっています。

セルC2に「=XLOOKUP(」と入力して、セルB2をクリックした状態です。自動的に「[@商品コード]」と入力されます(⑫)。これは「商品コード」列(フィールド)の1つの値を意味します
「,」に続けて、[商品マスタ]シートに切り替えて、商品コードが入力されているセル範囲を選択します(⑬)。自動的に「商品マスタ[商品コード]」と変換されます(⑭)。「商品マスタ」テーブルの[商品コード]列(フィールド)の意味です
同様に「,」を入力して、商品名のセル範囲を選択すると「商品マスタ[商品名]」と入力されます(⑮)。[Enter]キーを押します(⑯)
縦方向に数式が入力され、まとめて商品名を取得できました(⑰)
セルC2の数式をセルD2にコピーしました(⑱)
3つめの引数の「商品名」を削除すると、入力候補の一覧が表示されます。[単価](⑲)をダブルクリックします。矢印キーで選択して[Enter]キーを押しても構いません
まとめて単価を取得できました(⑳)
関数を使わない数式も構造化参照に変化します(㉑)。セルF2に「=」と入力してセルD2をクリック、「*」と入力してセルE2をクリックした状態です
まとめて売上を計算できました(㉒)

数式をメンテナンスする必要なし

 試しに「商品マスタ」テーブルに新しい商品を追加してみましょう。テーブルの範囲が自動的に拡張されます。先ほど入力したXLOOKUP関数の数式を修正する必要はなく、新しい商品コードが参照されて、商品名と単価が取得されます。

「商品マスタ」テーブルに新しい商品を追加しました(㉓)
数式は修正していません。新しい商品コード「P005」を入力します(㉔)
商品名と単価を取得できました(㉕)

 「商品マスタ」テーブルの拡張に伴って、数式中の構造化参照の範囲も広がった恩恵です。単にデザインが自動設定されるだけでなく、修正の手間も省ける「テーブル」は実務でも大きな効果を発揮するので、ぜひ活用してみてください。