(Excel)XLOOKUP関数で戻り範囲を複数指定する方法

 ExcelのXLOOKUP関数で戻り範囲(第3引数)を複数指定する方法についてです。
 単純に複数列の戻り値を得る方法と、飛び飛びの位置にある戻り範囲から戻り値を得る方法を紹介します。

戻り範囲に複数列を指定する方法

 次の画像では左側にデータの入った表があります。
 右側は検索欄になっており、H3セルの値(小野寺)が検索値です。
 そしてI3セルに「=XLOOKUP(H3,B3:B7,C3:F7)」という数式を入力しています。戻り範囲(第3引数)が「C3:F7」となっておりC3列からF列までの4列を含んでいることがポイントです。



 確定すると左側の表から「小野寺」という名前に対応する4つの数値が取得できました。
 このように戻り範囲を複数列にするだけで複数の戻り値を一括して取得できるのが(VLOOKUP関数と比較しての)XLOOKUP関数の特徴です。

 一部の列の値はいらない、という場合はこの式ですべて取得しておいて(I~L列のうちの)一部の列を非表示にするという方法も考えられます。
 以降で紹介するHSTACK関数等が利用できないバージョンでは有力な選択肢です。

HSTACK関数を併用する方法

 HSTACK関数が利用できるのはMicrosoft 365バージョンのみです(2025年7月現在)のでご注意ください。


 次の画像では戻り範囲にHSTACK関数を使用することで、飛び飛びの戻り範囲を指定しています。
 結果として「素早さ」を除いた3つの列からの戻り値を取得しています。

 I3セル

=XLOOKUP(H3,B3:B7,HSTACK(C3:D7,F3:F7))

 HSTACK関数は複数のセル範囲や配列を横方向に結合する関数です。
 「HSTACK(C3:D7,F3:F7)」によりC,D,Fの3つの列を1つの配列にまとめています。これをXLOOKUP関数の戻り範囲とすることで3つの戻り値を一括取得しています。

CHOOSECOLS関数を併用する方法

 ここで使うCHOOSECOLS関数もMicrosoft 365バージョンでしか利用できません(2025年7月現在)のでご注意ください。


 次の画像では戻り範囲にCHOOSECOLS関数を使用することで、飛び飛びの戻り範囲を指定しています。
 結果として1つ上の例と同様に、「素早さ」を除いた3つの列からの戻り値を取得しています。

 I3セル

=XLOOKUP(H3,B3:B7,CHOOSECOLS(C3:F7,1,2,4))

 CHOOSECOLS関数は指定した範囲のうち、○番目の列を取り出す関数です。列は第2引数以降で複数指定することができ、複数の列を取り出すことができます。
 ここでは「CHOOSECOLS(C3:F7,1,2,4)」とすることでC~Fの列のうち左から1,2,4番目の列、つまりC,D,F列の3つの列を取り出しています。これをXLOOKUP関数の戻り範囲とすることで3つの戻り値を一括取得しています。
 列の選択に数値を使うため、左側の表で列の追加や削除があっても対象とする列が適宜変更されません(VLOOKUPの列番号指定と同じ現象)。結果的に取得する値が変わってしまう問題が起きやすいのが弱点です。