GoogleスプレッドシートのXLOOKUP関数で、結果の範囲(第3引数)を複数列(場合によっては行)にし、さらに検索キーが複数ある場合に期待されるような結果が得られません。いわゆる縦横にスピル(Excel用語ですが)しない問題です。
ここではこれを何とかしてみます。
ここではこれを何とかしてみます。
- XLOOKUP関数にMAP/LAMBDA関数を併用することで、複数行複数列の戻り値を得ることができます。
手順
まずは問題の再現です。
XLOOKUP関数を使い、F3:F4に入力されている2つの文字列をキーとして、B~D列の表から国語と算数の点数を取得しようとしています。
しかしF3セルに対する2つの点数は得られているものの、F4セルに対する点数が得られていません。
ではARRAYFORMULAで囲めばどうなるかですが、今度は2つの国語の点(結果の範囲の中で最も左の列の値)しか得られません。
そこで解決法として、MAP/LAMBDA関数を併用します。
G3セル
=MAP(F3:F4,LAMBDA(a,XLOOKUP(a,B3:B8,C3:D8)))
検索キーであるF3:F4にaと名付け、a内の各セルごとにXLOOKUP関数を実行した結果を得ています。
なお、MAPはBYROWに代えても同じ結果になります。