Excelでデータを検索する関数といえば、やはりVLOOKUP関数が定番ですよね。 便利な関数ですが、「左側のデータを取得できない」「エラー対策が面倒」など、使っていて不便に感じたことはありませんか?
そんな課題を解決するため2020年頃に登場したのが、XLOOKUP関数です。 VLOOKUP関数をより柔軟で扱いやすく進化させたXLOOKUP関数は、データの抽出や管理にとても役立ちます。
今回は、XLOOKUP関数の基本の使い方から、VLOOKUP関数との違い、さらに最大値を目立たせたグラフと連動についてご紹介します。
XLOOKUP関数とは
指定した値を探し、それに対応するデータを取得する関数です。
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
- 検索値:探したい値
- 検索範囲:検索対象となるセル範囲
- 戻り範囲:取得したい値が含まれるセル範囲
- 見つからない場合(省略可):該当データがない場合に表示する値
- 一致モード(省略可):
- 完全一致(0/省略時)
- 検索値以上で最小の値(1)
- 検索値以下で最大の値(-1)
- ワイルドカードによる検索(2)
- 検索モード(省略可):
- 上から検索(1/省略時)
- 下から検索(-1)
- 昇順検索(2)
- 降順検索(-2)
XLOOKUP関数は、検索範囲内で検索値を探し、同じ行(または列)にある戻り範囲のデータを取り出します。 そのため、検索範囲と戻り範囲は必ず同じサイズである必要があります。たとえ、両方の範囲に検索値や取得したい値が含まれていても、行数(または列数)が異なるとエラーになります。
VLOOKUP関数との違い
XLOOKUP関数は、従来のVLOOKUP関数の弱点をカバーした、より柔軟で使いやすい関数です。
2つの関数はどのように違うのか、主な違いを見ていきましょう。
①右側検索も可能
VLOOKUP関数では、検索列の右側のデータしか取得できません。 左側のデータを取得するには、INDEX関数とMATCH関数を組み合わせて対応する必要がありました。
一方、XLOOKUP関数は左右(上下)どちらでも、データの取得が可能です。

② 列番号の指定が不要
VLOOKUP関数は列番号の指定が必要で、列の挿入や削除を行うとエラーが発生しやすい構造でした。しかし、XLOOKUP関数では、検索範囲や戻り範囲を直接指定するため、列や行が増減しても自動的に修正され、エラーが発生しません。これは選択範囲が絶対参照されていても有効です。

③ エラーメッセージを設定できる
VLOOKUP関数は、検索値がない場合のエラー対策にIFERROR関数の併用が必要でしたが、
XLOOKUP関数では、見つからない場合の値を引数で直接設定できます。

④ 完全一致がデフォルト
VLOOKUP関数では、一致モードを省略すると近似一致となり、意図しない結果になることもありました。しかし、 XLOOKUP関数では、完全一致がデフォルトになっており、省略しても一致するデータのみを取り出すことができます。

また、近似一致のモードを指定することでより柔軟な検索も可能です。
- 一致モード:-1(検索値以下で最大の値)
例えば、「売上金額に応じてランクを振り分ける」ようなケースに役立ちます。
検索範囲の中から検索値の次に小さい値を探し、戻り範囲から適切なランクを取り出すことで、その人がどのランクに属するかを自動で判断できます。 - 一致モード:1(検索値以上で最小の値)
例えば、「在庫が基準を下回ったら発注を促したい」ケースに有効です。
検索範囲の中から検索値の次に大きい値を探し、戻り範囲から対応する判定を取り出すことで、発注の有無が即座に判断できます。

- 一致モード:2(ワイルドカード検索)
「*」「?」などを利用した部分一致・あいまい検索が可能です。
例えば、「=XLOOKUP(“*カレー”, C2:C10, D2:D10,,2)」と数式を入力した場合、「〇〇カレー」のような後半部分がカレーの文字列を探し、最初に一致したデータを取り出すことができます。
⑤検索の方向も選べる
VLOOKUP関数は上から順番に検索するしかありませんでしたが、XLOOKUP関数では、検索モードを省略、又は「1」を指定すると上から検索、「-1」を指定すると下から検索もできるようになりました。それぞれ最初に一致したデータを取り出すことができるので、最新のデータを検索したい時に役に立ちます。

⑥ スピル機能に対応
XLOOKUP関数はスピル機能に対応しており、1つの数式で複数の値を一括取得できます。
例えば、商品番号に対応する商品名と価格を同時に取得したい時は、「G3セル」に以下の数式を入力します。
「 =XLOOKUP(F3,B3:B7,C3:D7)」
商品名の「C列」と価格の「D列」をまとめて戻り範囲に指定することで、対応する商品名と価格を一度に取り出すことができます。
この時、入力したセルの数式は黒字で表示されますが、スピル機能で広がったセルの数式は薄いグレーで表示され、数式や値の直接編集はできません。直接入力したり、既にデータが入力されている場合は「#スピル!」エラーが表示されるので注意が必要です。

スピル機能を使って連動グラフを作る
XLOOKUP関数では、VLOOKUP関数と同じように数値とグラフを連動させることができますが、スピル機能を使うことで、より簡単にグラフを作成することができます。
今回は、プルダウンで選択された商品番号に応じて、商品名と売上データを一括で取得し、売上データ上に最大値を目立たせた棒グラフを設置します。
プルダウンのリストを作成
- 商品番号のセルをクリックし、[データ]タブから[データの入力規則]を選択
- [データの入力規則]のダイアログボックスが表示されたら、入力値の種類から[リスト]を選択
- 元の値に商品番号を範囲選択
- [OK]をクリック
XLOOKUP関数を使ってデータを一括取得
- 商品名を表示させたいセルにXLOOKUP関数を入力
今回は「B3セル」に「=XLOOKUP(A3,A7:A11,B7:N11)」と入力します。戻り範囲に複数の列を選択することで、一つの数式から商品名と月別売上を一度に取り出すことができます

IF関数とMAX関数を組み合わせて最大値を判別
- 1月の売上数値の下に最大値を取り出す
今回は「C4セル」に「=IF(MAX($C$3:$N$3)=C3,C3,0)」と入力します。もし、年間売上の最大値が1月の売上ならば、1月の売上を、異なる場合は「0」を表示するという意味の数式になります。
- 12月の売上数値の下までドラッグして数式をコピー
- 必要であれば最大値を隠す
今回はフォントを白色に設定する

数値と連携し、最大値を目立たせたグラフを挿入
- 売上データと最大値のデータをまとめて範囲選択
- [挿入]タブから[集合縦棒グラフ]を選択

- グラフが挿入されたら系列2(最大値)の棒グラフを右クリック
- [データ系列の書式設定]を選択
- [系列のオプション]が表示されたら[系列の重なり]を「100%」に設定

これで系列1(売上金額)の上に、系列2(最大値)を重ねることができました。

あとはグラフを調整し、売上データの上に設置すれば完成です。
プルダウンで商品番号を切り替えると、縦棒グラフも自動で切り替わります。

おわりに
XLOOKUP関数を使えば、これまで手間がかかっていたデータ検索やグラフ連携も、もっとスムーズに進められるかもしれません。是非、日々の業務に取り入れてみてください。
コメント