VLOOKUPはExcelで表引きの出来る大変便利で強力な関数です。個人的にはVLOOKUPが使えるか否か、がExcel初級と中級との分岐点だと思っています。
しかし、その便利なVLOOKUPにも、いくつかいやなところがあります。
・元々のLOOKUPはいろいろと仕様がショボかったので改良型のVLOOKUP/HLOOKUPが出来たが、ほぼ同じ関数なのにデータの並び方向でV(垂直)とH(水平)の2つ分かれてしまっている。
→結果「なんとかLOOKUP」という関数が3つもある(LOOKUP, VLOOKUP, HLOOKUP)。
→ちなみにVLOOKUP以外を使ったことはありません。
・自分としては完全一致で使うことが大半だが、デフォルトは完全一致ではない。
→「検索の型」として第4パラメータで指定する。
→LOOKUPにはない仕様。
・検索対象と表引き結果をひとつの範囲で指定する仕様なので、データを加工しないと利用できないことがある。
→戻り値の列は検索範囲の列と隣接して行が一致していないといけない。
→戻り値の列は検索範囲の列よりも後ろにないといけない。
→戻り値はひとつしか返せないので、複数の列を引いてくるには、その数分似たような式を並べないといけない。
・一致するデータがない場合、エラー値 #N/A になってしまう。
→いちいちIFERRORで包んでエラー時には "" にする、とか小細工しないといけない。
新たに追加されたXLOOKUPは「似たような関数がたくさんある」を悪化させる以外、他のすべてを解決してくれます。
・一致モード(第5引数)のデフォルトは「0」
→0 - 完全一致。 見つからない場合は、#N/A が返されます。 これが既定の設定です。
・従来の「範囲」は検索範囲(第2引数)と戻り配列(第3引数)の2つに分けられた。
→離れていてもいいし、縦でも横でもいいし、別シートや別ブックでもいい。
・戻り値は戻り配列(第3引数)として指定可能。
→新たにサポートされたスピルという仕組みで、一つの式で複数のセルに渡る値を参照できる。
・[見つからない場合](第4引数)が追加された。
→見つからなかった場合、ここに指定したデータが#N/Aの代わりに返される。
・[検索モード](第6引数)が追加された。
→シーケンシャルサーチ/バイナリサーチ/昇順/降順を指定できる。
1:シーケンシャル/昇順(デフォルト
-1:シーケンシャル/降順
2:バイナリ/昇順
-2:バイナリ/昇順
※バイナリサーチ:高速だが検索範囲はソートしてある必要がある。
※シーケンシャル:検索範囲はソートしておかなくてよいが検索速度にばらつきがある。
【参考】XLOOKUP 関数 - Office サポート
https://support.office.com/ja-jp/article/xlookup-%E9%96%A2%E6%95%B0-b7fd680e-6d10-43e6-84f9-88eae8bf5929
他にもMATCHのスピル版(スピルバンwwww)のXMATCHとか、スピルのおかげで実現できる待望のFILTERとかSORTとかも追加になっています。喜ばしいことです。