Googleスプレッドシートでデータを検索するとき、VLOOKUP関数を使っている方は多いでしょう。しかし、VLOOKUPには左方向への検索ができないなど、いくつかの制限があります。XLOOKUP関数は、そうした制限を解消し、より柔軟な検索を可能にする新しい関数です。この記事では、XLOOKUP関数の基本的な使い方と、VLOOKUPより便利な点を具体例を交えて解説します。
【要点】XLOOKUP関数で検索を効率化するポイント
- =XLOOKUP(検索値, 検索範囲, 戻り範囲): 基本構文で、左方向や上下方向の検索が自由にできます。
- 第4引数(見つからない場合の値): エラーの代わりに任意のテキストを表示できます。
- 第5引数(一致モード)と第6引数(検索モード): 完全一致・部分一致・ワイルドカード検索や、先頭から検索・末尾から検索などを指定できます。
ADVERTISEMENT
目次
XLOOKUP関数が登場した背景とVLOOKUPとの違い
XLOOKUP関数は、従来のVLOOKUPやHLOOKUP、INDEX/MATCHを置き換える目的で2020年にGoogleスプレッドシートに導入されました。VLOOKUPでは、検索値が左端になければならず、列の追加や削除で数式が崩れる問題がありました。また、右方向の検索しかできず、左方向を検索するにはINDEX/MATCHを組み合わせる必要がありました。XLOOKUPはこれらの制限をすべて解消し、1つの関数で柔軟な検索を実現します。さらに、エラー処理や一致モードの指定が引数に含まれているため、数式がシンプルで保守しやすくなっています。
XLOOKUP関数の基本的な使用方法
まずは基本的な構文を確認しましょう。XLOOKUP関数の引数は以下の通りです。
- 検索値: 検索したい値を指定します。
- 検索範囲: 検索値を探す範囲を指定します。
- 戻り範囲: 一致した行から取得したい値の範囲を指定します。
- 見つからない場合の値(省略可): 検索値が見つからなかったときに表示する値を指定します。
- 一致モード(省略可): 0で完全一致、1で近似値(次に大きい)、-1で近似値(次に小さい)、2でワイルドカード一致を指定します。
- 検索モード(省略可): 1で先頭から検索、-1で末尾から検索、2でバイナリ検索(昇順)、-2でバイナリ検索(降順)を指定します。
それでは、具体的な手順を見ていきましょう。サンプルデータとして、社員リストから社員番号をキーに名前を取得する例を使います。
- データを準備する: スプレッドシートに社員番号と名前のリストを用意します。社員番号はD列、名前はE列とします。
- XLOOKUP関数を入力する: 結果を表示したいセル(例:B2)に「=XLOOKUP(」と入力します。
- 引数を指定する: 検索値として社員番号のセル(例:A2)、検索範囲として社員番号の列(例:$D$2:$D$100)、戻り範囲として名前の列(例:$E$2:$E$100)を指定します。絶対参照($)を使うと数式をコピーしたときに範囲がずれません。
- 数式を完成させる: 「)」で閉じてEnterキーを押します。数式は「=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100)」のようになります。
これで、社員番号に対応する名前が表示されます。VLOOKUPと違い、検索範囲と戻り範囲が別々に指定できるため、左方向の検索も簡単に行えます。例えば、名前から社員番号を検索する場合、検索範囲に名前の列、戻り範囲に社員番号の列を指定するだけです。
エラー処理を追加する方法
- 第4引数を追加する: 「=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, “該当なし”)」とします。
- 効果を確認する: 社員番号が見つからない場合、「該当なし」と表示されます。IFERROR関数を使う必要がありません。
部分一致(ワイルドカード)検索を行う方法
- 第5引数に2を指定する: 検索値にワイルドカード文字を含めます。例えば、「=XLOOKUP(“*山*”, $D$2:$D$100, $E$2:$E$100, , 2)」とします。
- 注意点: ワイルドカード文字として、*は任意の文字列、?は任意の1文字を表します。完全一致と異なる動作を理解しましょう。
最後の一致を取得する方法
- 第6引数に-1を指定する: 「=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, , , -1)」とします。
- 使用例: 同じ社員番号が複数ある場合、最後の行のデータを取得します。売上データなどで最終レコードを取得したい場合に便利です。
複数条件を組み合わせた検索
XLOOKUP単体では複数条件の検索はできませんが、他の関数と組み合わせることで実現できます。例えば、検索値を「&」で結合したキーを作成し、検索範囲も同様に結合列を用意します。
- ヘルパー列を作成する: C列に「=A2&B2」のようにキーを結合した列を追加します。
- XLOOKUPで検索する: 検索値も「=検索値1&検索値2」と結合して指定します。例:「=XLOOKUP(F2&G2, $C$2:$C$100, $D$2:$D$100)」
XLOOKUP関数使用時の注意点
XLOOKUP関数は便利ですが、いくつか注意すべき点があります。
検索範囲と戻り範囲のサイズを一致させる
検索範囲と戻り範囲の行数(または列数)が異なるとエラーになります。必ず同じ数の行または列を指定してください。
ワイルドカード検索の挙動
第5引数に2を指定する場合、検索値にワイルドカード文字を含める必要があります。また、完全一致(0)と混同しないように注意しましょう。ワイルドカードを使用する場合は、意図しない部分一致が発生しないか確認が必要です。
バイナリ検索の条件
第6引数に2または-2を指定する場合、検索範囲が昇順または降順にソートされている必要があります。ソートされていないと誤った結果が返る可能性があります。
他の関数との互換性
XLOOKUPはGoogleスプレッドシートだけでなくMicrosoft Excelでも使用できますが、古いバージョン(Excel 2019以前)では利用できません。共同作業者とスプレッドシートを共有する際は、相手の環境を確認することをお勧めします。
ADVERTISEMENT
XLOOKUP関数とVLOOKUP関数の違い
| 機能 | VLOOKUP | XLOOKUP |
|---|---|---|
| 検索方向 | 左から右のみ | 左・右・上下任意 |
| 戻り列の指定 | 列番号(数値) | 範囲を直接指定 |
| エラー処理 | IFERROR関数と組み合わせ | 第4引数で標準対応 |
| ワイルドカード | 検索値に直接指定 | 第5引数でモード指定 |
| 複数一致 | 最初の一致のみ | 検索モードで最初/最後を選択 |
| 近似一致 | TRUE/FALSE | 1/-1/2など詳細指定 |
| 列の追加・削除の影響 | 列番号がずれる | 範囲指定のため影響を受けにくい |
このように、XLOOKUPはVLOOKUPと比較して多くの点で優れています。特に列の追加・削除に対する堅牢性は、長期運用するシートで大きなメリットです。
XLOOKUP関数を使えば、VLOOKUPの制限を気にせずに柔軟な検索ができます。この記事で紹介した基本構文を押さえれば、日常のデータ検索作業が大幅に効率化するでしょう。特にエラー処理や方向の自由度は大きなメリットです。ぜひ実際のシートで試してみて、INDEX/MATCHやVLOOKUPからの移行を検討してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
