XLOOKUP関数は単独で、複数の方向への検索に対応
VLOOKUP関数は縦方向(HLOOKUP関数は横方向)にしか検索できない
VLOOKUP関数は表を検索する場合に多く用いられる、とても便利な関数です。
しかし、簡単に使える反面いくつかの使いづらい点がありました。
VLOOKUP関数は縦方向(Vertical)の1方向にしか検索することができません。
※ HLOOKUP関数は横方向(Horizontal)
その他にもVLOOKUP 関数にはいくつか使いづらい点がありました。
- 列の挿入・削除をすると結果が変わってしまう時がある
- 検索する列より左にある列の値を返すことができない
- 検索に時間がかかる場合がある
- 完全一致にするためには、FALSEを指定しなければならない
VLOOKUP関数を使うには検索対象の列が「最左端」でなければならない
VLOOKUP関数は、検索対象に指定した「列」より左側にある「列」の結果を返すことができないので、検索対象の列が一番左側にある「表」の場合しか使えませんでした。
検索対象の「列」が最左端にない場合は、他の関数を使う
検索対象の列より"左側"にある列を検索結果として表示させるためには、その他の関数を使います。
しかしどの方法もネスト構造(入れ子)になってしまうため、数式が複雑になり対象になる「表」を変更した場合、数式の変更が大変でした。
1.MACH関数とINDEX関数を組み合わせる
INDEX関数の「行」の値をMATCH関数で検索することで、表の3列目にある「著者名」を検索値にします。
2.MACH関数とOFFSET関数を組み合わせる
INDEX関数と同様に「行」の値を、MATCH関数を使って求めます。
「列」の指定は、「参照した列」を起点にして、左隣の場合は「-1」として指定します。
注意点は、行の起点がOFFSET関数は「0」で、MATCH関数は「1」になるため、そのままではOFFSET関数が「2」になった場合、MATCH関数は「3」となるため、数式ではMATCH関数から1を除することで「行」を合わせます。
※ MATCH関数から1を除さないと、「大田」を指定すると斜め下の「マーケットの・・・」が表示される。
XLOOKUP関数は検索する範囲と表示させる範囲(戻り範囲)を指定できる
Excelに新しく追加された、XLOOKUP関数は従来のVLOOKUP関数(HLOOKUP関数)の使いずらい点を修正したとても便利な関数です。
- 縦方向・横方向どちらにも検索できる
- 「検索値」が左端(上端)でなくてもよい
- 検索モードを指定でき、高速に検索できる「バイナリモード」がある
- 最大の特徴は「スピル」ことです
1.縦方向・横方向どちらにも検索できる
LOOKUP関数はMACH関数と同様に、直接「検索する範囲だけを指定する」ことができるので、縦方向・横方向に検索することができます。
2.検索値が「左端(上端)」でなくてもよい
LOOKUP関数と同様に「検索する範囲」と「結果として得たい値(戻り配列)」を別々に指定できるので、検索値が「左端」にある必要はありません。
そして、検索範囲をLOOKUP関数のように「昇順」に並べ替える必要がありません。
3.検索モード「バイナリモード」が使える
XLOOKUP関数は、「検索モード」を指定してどのように検索するかを選択することができ、「バイナリモード」を指定することができます。
「バイナリモード」は、データ量が膨大で通常の検索方法では時間がかかる場合に高速で処理することができます。
※ バイナリモード(バイナリサーチ)は検索範囲が昇順(降順)で並べ替えられているのが条件ですが、上や下から一つずつ順番に検索するのではなく、範囲の中央値を調べ、その中央値の「上にあるか、下にあるか」をチェックし、ある側の中央値を調べることを繰り返して校則に検索する方法です。
4.XLOOKUP関数はスピル配列の要素があるので、「スピル」んです
XLOOKUP関数は、検索する範囲と結果として表示したい範囲を別々に指定することができるようになりました。
これにより、他の関数を組み合わせることなく単独で使える場面が増えました。
しかし、このXLOOKUP関数の最大の特徴は「スピル」ことです。
※「スピル」の意味は「溢れる、こぼれる」
「スピル」の最大の特徴は「1つのセルに数式をするだけで、その他のセルに数式があふれるように入力される」ことです。
従来の方法であれば、表示したい「項目」のそれぞれのセルに数式を入力する必要がありました。
実際にはコピーやフィルの機能を使って入力することになると思いますが、その際には相対参照や絶対参照に注意する必要があり大変でした。
また、検索範囲などを変更した場合は、全てのセルを修正する必要がありました。
スピルの機能を持つXLOOKUP関数の場合は、「管理番号」の部分に数式を入力すれば、「書名」、「著者名」の部分はスピルの機能でブランクセルにExcelが勝手に計算結果を入力してくれます(動的配列数式)。
今回の例でも、数式は「F8」の管理番号のセルにだけ入力されています。
「G9」と「H9」のセルには、数式がグレーの「ゴースト」で表示されており、変更することはできません。
「動的配列数式」で、戻り範囲を指定
「管理番号・署名・著者名」のすべての項目を、戻り範囲(検索結果として表示)にする場合は、「表全体」を戻り範囲にすることで先頭の「管理番号」のセルに入力した数式が「溢れる(スピル)」ように他のセルにも入力されます。
- 検索値は「F5」を選択
- 検索範囲は管理番号部分「D5 : D14」を選択
- 戻り範囲は「表全体」を選択
※ 注意点は、「検索範囲」と「戻り範囲」を「相対参照」にすることです。
動的配列数式で「溢れた(スピル)」部分は、ゴーストになる
スピルの機能(動的配列数式)により「結果」が表示されているセルは、実際には数式が入力されていない「ゴースト」なので、数式バーには数式が「淡いグレー」の色で表示され、変更することはできません。
このようにExcelの革命といわれる「スピル」の機能を持ったXLOOKUP関数は今回のように「1つのセルに数式を入力するだけで良い」という大きな特徴があります。
スピルの「溢れる」方向は、今回の例のように VLOOKUP関数のように横方向だけではありません。
HLOOKUP関数のように使えば、縦方向にも「溢れ」ます。
スピルの機能を持つ関数は他にも数多くあります。
他の記事でも紹介した「UNIQUE関数」の場合のように、戻り値(結果)が増えれば「どんどん溢れていく」ので、あらかじめ表示する部分を用意(数式を入力)していないので、今までとは全く異なる使い方ができます。
今回はVLOOKUP関数の最大の特徴の「スピル配列」の機能を紹介しましたが、次回はさらに詳しくVLOOKUP関数の機能を紹介します。