60
ExcelでXLOOKUPを使う方法:強化版VLOOKUP
XLOOKUP
(画像提供:Tom's Hardware)

スプレッドシートで作業していると、共通のセルを持つ2つの異なるワークシートのデータを一致させたい場合があります。例えば、従業員名とID番号のリストと、名前と住所のリスト、あるいはトラフィックデータと著者名が別のシートに分かれているWeb記事のリストなどです。そんな時、Excelの新しいXLOOKUP関数が役立ちます。 

2020年2月にExcelの最新リリースバージョンに初めて追加されたXLOOKUPは、人気のVLOOKUP関数を改良したものです。VLOOKUP関数も異なるシートのデータを結合できますが、機能は限定的です。また、検索したデータと同じ列にあるデータを検索するHLOOKUP関数の機能もすべて備えています。 

VLOOKUPに対するXLOOKUPの利点

  • 複数の列を一度にコピーできます。
  • 参照セルが左の最初のセルにある必要はありません
  • デフォルトでは完全一致のみになります(VLOOKUP ではそうではありませんでした)
  • 不完全な一致にはワイルドカードを使用できる
  • 一致するものがない場合に「見つかりません」というテキストを指定できます
  • 必要なパラメータは3つだけ

XLOOKUPは最大6つのパラメータを受け入れますが、必須なのは最初の3つだけです。書式は次のとおりです。

=XLOOKUP(検索値,検索配列,戻り配列,[見つからない場合],[一致モード],[検索モード])

まず、簡単な XLOOKUP クエリを実行する方法を説明します。

シンプルなXLOOKUPクエリの実行方法

1.結果を表示する最初のセルに「 =XLOOKUP(」と入力します。

=XLOOKUP( と入力します

(画像提供:Tom's Hardware)

2.参照値を含むセルをクリックし、カンマを入力します(セルアドレス(例:C2)を入力することもできます)。これが、両方のシートで照合する値です。この例では、参照値はセルC2で、姓が含まれています。値を引用符で囲んで入力することもできますが、その場合、複数の行にコピー&ペーストして、それぞれ異なる一致を取得することはできません。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

XLOOKUPの検索値を選択

(画像提供:Tom's Hardware)

3.参照値を検索するセル範囲を選択し、カンマで区切ってください。データが入っているセルだけをハイライトするのではなく、列全体を選択することを強くお勧めします。そうすることで、コピー&ペーストした場合でも、範囲全体が同じになります。 

範囲を手動で入力することもできますが、マウスでハイライトするのがおそらく最も簡単です。この列は、同じExcelファイルの別のタブ、あるいはコンピュータ上の全く別のファイルにある場合もあります。今回の場合は、ファイルの「住所」タブにある列B全体を選択します。これは、姓も含まれているためです。

XLOOKUPで検索する範囲を選択してください

(画像提供:Tom's Hardware)

4.返したいセル範囲を選択し閉じ括弧を追加して関数呼び出しを完了します。繰り返しになりますが、列全体を選択することをお勧めします。複数列分のデータを選択した場合、最初の列以降のすべての列がXLOOKUP式に隣接するセルにコピーされます。

今回のケースでは、「住所」シートのC列からE列までを選択し、従業員のメールアドレス、性別、IPアドレスを継承できるようにしました。最終的な数式は以下のようになります。

=XLOOKUP(C2,住所!B2:B1001,住所!C2:E1001)

XLOOKUPでデータの範囲を選択する

(画像提供:Tom's Hardware)

最終結果は、下の画像のようなものになります。

3列のXLOOKUP最終結果

(画像提供:Tom's Hardware)

5.数式を他のセルにコピー&ペーストして、行全体に適用します。数式をデータのある最後の行までドラッグすると、Excelは自動的に参照値セルを適切な行番号に置き換えます。つまり、最初のセルがC2で、数式を行500にコピーすると、C500になります。 

XLOOKUPで結果をコピー&ペーストする

(画像提供:Tom's Hardware)

ただし、検索範囲または戻り値範囲のパラメータで列全体を選択していない場合は、コピー&ペーストする前にセル範囲に$記号を追加する必要があります。そうしないと、下の行に貼り付ける際に検索対象のセル範囲が変わってしまいます。$記号を追加する最も簡単な方法は、数式内の該当する部分を選択してF4キーを押すことです。

範囲の一貫性を保つためにドル記号を使用するXLOOKUP

(画像提供:Tom's Hardware)

XLOOKUPの「見つからない場合」パラメータ

XLOOKUP関数の4番目のパラメータを指定しないと、検索に失敗したセルはすべて#N/Aと表示されます。ただし、セルのメッセージをカスタマイズしたい場合(または空白のままにしたい場合)、見つからないというメッセージを引用符で囲んで追加するだけです。 

この例では、「申し訳ありませんが、見つかりませんでした」というテキストを使用しました。式は次のようになります。

=XLOOKUP(C2,住所!B2:B1001,住所!C2:E1001,"申し訳ございません。見つかりませんでした。")

XLOOKUP のカスタム「見つかりません」メッセージ

(画像提供:Tom's Hardware)

XLOOKUPの一致モード

XLOOKUPはデフォルトで完全一致のみを返すため、最後の「Symmonds」を検索していて、別のシートでは「Simmonds」と綴られている場合、一致するものは見つかりません。また、「300」のような数値を検索していて、それより大きい数値やより小さい数値がある場合も、一致するものは見つかりません。

ただし、5番目のパラメータでは「一致モード」を選択できます。Excelはワイルドカード、次に大きい数値、または次に小さい数値を検索します。デフォルトのモード0は完全一致です。-1を入力すると、完全一致が見つからない場合に次に小さい項目を検索します。つまり、300を検索しているときに200と400が見つかった場合、200が返されます。一致モード1では、次に大きい数値(400)が返されます。 

XLOOKUPの一致モードオプション

(画像提供:Tom's Hardware)

マッチモード2では、ワイルドカード文字を使用して検索できます。ワイルドカード「*」は任意の数の文字に一致しますが、「?」は1文字のみに一致します。つまり、「Symmonds」または「Simmonds」のいずれかを検索したい場合は、マッチモード2で「S?mmonds」と入力します。Sで始まる名前を検索したい場合は、マッチモード2で「S*」と入力します。

XLOOKUP 検索モード

6番目で、おそらく最も重要度が低いXLOOKUPパラメータは、Excelの検索方法を制御します。ほとんどの人や状況では、このパラメータはおそらくあまり変化しないため、完全に省略することをお勧めします。

XLOOKUP検索モード

(画像提供:Tom's Hardware)

検索モードには4つのオプションがあります。デフォルトのモード1では、検索範囲の最上行から検索を開始し、最初の一致を見つけます。モード-1では、下から上へ検索します。モード2(先頭から最後へ)と-2はバイナリ検索です。バイナリ検索では、データがソートされている必要があり、システムは各セルを列の中央値と比較し、一致しない場合は検索範囲をさらに絞り込みます。正直なところ、なぜこれが必要なのか分かりませんが、大規模なデータセットでは高速化される可能性があります。

Avram Piltchは特別プロジェクト担当の編集長です。仕事で最新ガジェットをいじったり、展示会でVRヘルメットを装着したりしていない時は、スマートフォンのルート化、PCの分解、プラグインのコーディングなどに取り組んでいます。技術的な知識とテストへの情熱を活かし、Avramはノートパソコンのバッテリーテストをはじめ、数多くの実環境ベンチマークを開発しました。