はじめに:その面倒な検索、XLOOKUP関数が解決します!
「商品リストから、特定のコードに対応する品名や単価を探して、請求書に一つひとつ転記するのが面倒…」
Googleスプレッドシートを使っていて、こんな風に感じたことはありませんか?
もし答えが「YES」なら、その悩み、XLOOKUP(エックスルックアップ)関数が解決します!
これまでデータ検索の定番だったVLOOKUP関数には、実はたくさんの「弱点」がありました。
- 「検索したい値は、必ず範囲の左端にないとダメ…」
- 「あとから列を追加したら、数式がズレてエラーに…」
- 「エラー表示を消すために、IFERROR関数と組み合わせるのが面倒…」
XLOOKUP関数は、これらの面倒な作業をすべて解消するために生まれた、VLOOKUP関数の正統な進化版です。
この記事を読めば、XLOOKUP関数の基本から応用、よくあるエラーの解決策まで完全にマスターでき、あなたのデータ作業は劇的に速く、そして楽になります。
さあ、一緒に「手作業から自動化へ」の一歩を踏み出しましょう!
なぜ「もうVLOOKUPには戻れない」のか?5つの理由
まずは、なぜ多くの人が「XLOOKUP関数を一度使うと、もうVLOOKUP関数には戻れない」と感じるのか、その理由を5つのポイントで比較しながら見ていきましょう。
| 比較ポイント | ||
|---|---|---|
| 検索方向 | 右方向のみ | 左右どちらでもOK |
| 列の増減 | 影響を受ける (エラーの原因に) | 影響を受けない |
| 一致方法の初期値 | 近似一致 (思わぬミスを招く) | 完全一致 (安全) |
| 見つからない場合 | IFERROR関数が別途必要 | 関数内で指定可能 |
| 複数データの取得 | 不可(関数を複数入力) | 可能(一度の入力でOK) |
理由1:検索範囲の「左側」も検索できる!(最大の弱点を克服)
VLOOKUP関数最大の弱点は、「検索値が、必ず検索範囲の一番左の列になければならない」という制約でした。
しかしXLOOKUP関数なら、「探す場所」と「返す場所」を自由に指定できるため、検索値の左側にあるデータも簡単に取得できます。もう表の構成を気にする必要はありません。
理由2:列の追加・削除に強い
VLOOKUP関数では、戻り値の位置を「左から3番目」のように列番号で指定していました。
そのため、後から列を追加・削除すると数式がズレてしまい、修正が必要でした。
XLOOKUP関数は、戻り値の「範囲」そのものを直接指定するため、表のレイアウトが変わっても数式を修正する必要がありません。
メンテナンスがとても楽になります。
理由3:初期設定が「完全一致」だからミスが減る
VLOOKUP関数は、設定を省略すると「近似一致」で検索するため、意図しないデータが返ってくるというミスが起こりがちでした。
一方、XLOOKUP関数は初期設定が「完全一致」。
より安全で、私たちの感覚に合った使い方ができます。
理由4:構文がシンプルで直感的
XLOOKUP関数の構文は、VLOOKUP関数に比べてとてもシンプルです。
=XLOOKUP(何を, どこから探す, どこを返す)
この3つを指定するだけで基本的な検索ができるため、初心者でもすぐに覚えられます。
理由5:見つからない場合の処理も関数一つで完結!
VLOOKUP関数で値が見つからないと「#N/A」エラーが表示されます。
これを避けるには、IFERROR関数と組み合わせる必要がありました。
XLOOKUP関数なら、4番目の引数に「見つからなかった場合に何を表示するか」を指定できるので、関数一つでエラー処理まで完結します。
【基本編】最初の4ステップで、エラーに強い検索をマスター!
それでは、実際にXLOOKUP関数を使ってみましょう!
6つある引数のうち、最初の4つを覚えるだけで、日常業務のほとんどをカバーできます。
ここでは、以下の「商品マスタ」を例に進めていきます。
| 商品コード (A列) | 商品名 (B列) | カテゴリ (C列) | 単価 (D列) | 在庫数 (E列) |
|---|---|---|---|---|
| F-001 | りんご | 食品 | 120 | 100 |
| F-002 | みかん | 食品 | 80 | 200 |
| A-001 | Tシャツ | アパレル | 2000 | 50 |
| A-002 | パーカー | アパレル | 4000 | 30 |
ステップ1:XLOOKUP関数の構文を確認
=XLOOKUP(①検索キー, ②検索範囲, ③戻り範囲, [④見つからない場合の値], ...)
まずは太字の3つが必須項目です。
ステップ2:必須の3つの引数を理解しよう
- ① 検索キー(何を): 探したい値が入っているセル(例:「A-001」)
- ② 検索範囲(どこから探す): ①のキーを探す範囲(例:商品コードの列
A2:A5) - ③ 戻り範囲(どこを返す): 実際に取り出したいデータが入っている範囲(例:商品名の列
B2:B5)
ステップ3:実践!商品コードから商品名を検索
商品コード「A-001」の商品名を取得してみましょう。
空いているセル(G2セルなど)に、以下の数式を入力します。
=XLOOKUP("A-001", A2:A5, B2:B5)
すると、「Tシャツ」と表示されるはずです。
VLOOKUPのように列番号を「1, 2, 3…」と数える必要がなく、とても直感的ですよね。

ステップ4:第4引数でエラーをスマートに回避
次に、4番目の引数です。
これは、検索キーが見つからなかった時に何を表示するかを事前に指定できる、便利な機能です。
存在しない商品コード「X-999」を検索し、見つからない場合は「該当なし」と表示させてみましょう。
=XLOOKUP("X-999", A2:A5, B2:B5, "該当なし")
IFERROR関数を組み合わせなくてもエラーメッセージを自由に決められるので、表がスッキリします。
報告書の見栄えも良くなる、まずマスターしたい機能です。

【応用編】残り2つの引数で、検索を極める!
基本をマスターしたら、残りの2つの引数も使いこなし、さらに高度な検索を実現しましょう。
応用①:第5引数 [一致モード] で「あいまい検索」「近似検索」
5番目の引数は、検索方法を細かく指定するためのものです。
0: 完全一致(初期設定)-1: 近似一致(次に小さい値)1: 近似一致(次に大きい値)2: あいまい一致(ワイルドカード)
特に便利なのが「あいまい一致」です。
あいまい検索(一部の文字で探す)
商品名に「パーカー」を含む商品の在庫数を探してみましょう。
=XLOOKUP("*パーカー*", B2:B5, E2:E5, , 2)
「*」(アスタリスク)は、どんな文字にも変身できる便利な記号(ワイルドカード)です。
一致モードに 2 を指定することで、このワイルドカードが有効になり、「パーカー」という文字を含む商品を探し出して、在庫数「30」を返してくれます。

近似一致(料金表や成績評価で活躍)
単価に応じて割引率が変わる、といったケースで役立ちます。
| 単価以上(G列) | 割引率(H列) |
|---|---|
| 1 | 0% |
| 1000 | 5% |
| 3000 | 10% |

単価「2000円」の割引率を調べるには、以下のように入力します。
=XLOOKUP(2000, G2:G4, H2:H4, , -1)
一致モードを -1 にすると、2000が見つからない場合、それより小さい値の中で最も大きい「1000」が検索されます。
結果として、単価1000円以上3000円未満に適用される割引率「5%」が正しく返されます。

応用②:第6引数 [検索モード] で「最新データ」を取得
6番目の引数は、検索する方向を指定します。
1: 先頭から末尾へ(初期設定)-1: 末尾から先頭へ
-1 を指定すると、時系列データの中から「最新のデータ」を簡単に取得できます。
| 日付(J列) | 商品コード(K列) | 新価格(L列) |
|---|---|---|
| 2025年10月1日 | F-001 | 120 |
| 2025年10月2日 | A-001 | 2000 |
| 2025年10月5日 | F-001 | 130 |
商品コード「F-001」の最新価格を調べるには、以下のように入力します。
=XLOOKUP("F-001", K2:K4, L2:L4, , 0, -1)
検索モード -1 により、表の下から上に向かって検索が行われ、最初に見つかった(=最も日付が新しい)価格「130」が返されます。

【発展編】知っていると差がつく便利機能
発展①:複数の戻り値を一度に取得!(スピル機能)
戻り範囲を複数列に広げるだけで、関連データを一気に取得できます。
=XLOOKUP("F-001", A2:A5, B2:D5)
戻り範囲をB2:D5(商品名〜単価)に設定すると、数式を入力したセルから右に向かって「りんご」「食品」「120」が自動的に表示されます。
この機能を「スピル」と呼びます。
数式は一つしか入れていないのに、関連データがすべて自動で表示されるのは感動的です。
今まで項目ごとに関数を入力していた作業が、たった1回で済み、まさに自動化と言えるでしょう。

発展②:複数条件で検索するならFILTER関数がおすすめ
「カテゴリが食品」で「在庫数が150以上」の商品を探すなど、複数条件での検索は、XLOOKUP関数を組み合わせるよりFILTER関数を使うのがシンプルで確実です。
=FILTER(B2:B5, C2:C5="食品", E2:E5>=150)
この数式は、「カテゴリが”食品”」かつ「在庫数が150以上」の条件を満たす商品名をすべて返します。
この例では「みかん」が表示されます。

これで迷わない!XLOOKUP関数のよくあるエラーと解決策
便利なXLOOKUP関数ですが、慣れないうちはエラーに遭遇することも。
でも大丈夫、原因はだいたい決まっています。
① #N/A エラー:「見つかりません!」
原因
検索範囲内に、指定した値が見つからない。
解決策
- 検索キーの入力ミス(半角/全角、不要なスペース)がないか確認する。
- 第4引数「見つからない場合の値」を指定する。
=XLOOKUP("X-999", A2:A5, B2:B5, "該当なし")
② #VALUE! エラー:「範囲の大きさが違います!」
原因
「検索範囲」と「戻り範囲」の行数や列数が一致していない。
解決策
範囲指定を見直しましょう。
検索範囲が A2:A5 なら、戻り範囲も B2:B5 のように、大きさを揃える必要があります。
③ #REF! エラー:「結果を表示する場所がありません!」
原因
スピル機能で複数データを表示しようとした際、表示先のセルに既になんらかのデータが入力されている。
解決策
結果が表示される範囲のセルを空にしましょう。
XLOOKUP関数は、結果を展開するための十分なスペースを必要とします。
【まとめ】XLOOKUPをマスターして、面倒なデータ作業を自動化しよう!
今回は、スプレッドシートの新定番「XLOOKUP関数」を徹底解説しました。
- 基本は
=XLOOKUP(何を, どこから探す, どこを返す)の3つ! - 第4引数を使いこなせば、エラー知らずで安全な検索が可能に。
- 応用すれば、あいまい検索や最新データの取得も自由自在。
- スピル機能で、複数データの同時取得も可能!
- エラーが出ても、原因を特定して冷静に対処すれば大丈夫。
XLOOKUP関数は、あなたのデータ照合作業を劇的に効率化し、ミスを減らしてくれる強力なパートナーです。
これまで手作業で行っていた時間を短縮し、もっと創造的な仕事に時間を使えるようになります。
まずは、あなたの業務で使っているスプレッドシートを開いて、VLOOKUP関数をXLOOKUP関数に書き換えることから始めてみてください。
その使いやすさと便利さに、きっと「もう元には戻れない」と感じるはずです。
この記事が、あなたの「手作業から自動化へ」のきっかけになれば嬉しいです。


