残業を減らす!Officeテクニック
ExcelのXLOOKUP関数で連続しない列から値を取り出すワザ ~取り出し順の変更も可能
2025年3月3日 06:55
2025年の10月にExcel 2016 / 2019の延長サポートが終了します。そろそろ最新のExcelへの移行を検討している人もいるでしょう。最新バージョンのExcelでは、VLOOKUP関数に代わる“XLOOKUP関数”が利用できる点は見逃せません。
XLOOKUP関数の基本的な使い方は以前の記事で紹介していますが、VLOOKUP関数よりも洗練されて、より手軽に使えるようになりました。
これまでVLOOKUPを使っていた人は、さらに捗ると思います。例えば、以下のような表で、会員IDから氏名を取り出す場合は、3つの引数だけで処理できます。
しかし、残りのフィールド「受講履歴」「会員種別」「健康スコア」を取り出す時に困ります。参照元の表では、左から「氏名」「会員種別」「受講履歴」「健康スコア」と順番も異なり、連続もしていません。
VLOOKUP関数なら数式をコピーして、引数[列番号]の数値を変更する以外の選択肢はありませんが、XLOOKUP関数でも「=XLOOKUP(Q2,A2:A101,L2:L101)」のような数式を1つずつ入力するしかないのでしょうか? 今回は、XLOOKUP関数をもっと活用するための小ワザを紹介したいと思います。
HSTACK関数で参照する表を整える
XLOOKUP関数の特徴は、検索値を検索するセル範囲(検索範囲)と該当する値を返すセル範囲(戻り範囲)を別々に指定できて、さらにスピルによって連続するセルの値を1つの数式で取得できることにあります。
要するに、引数[戻り範囲]に指定するセル範囲を整えてしまえばいいわけです。そんな都合の良い関数が“HSTACK”です。
先ほどの表を元に「氏名」「受講履歴」「会員種別」「健康スコア」の順に組み合わせてみましょう。引数[配列]にはセル範囲を指定するだけです。「,」で区切って、意図する順番に指定します。
XLOOKUP関数に組み込む
セルR4に入力した数式で「氏名」「受講履歴」「会員種別」「健康スコア」の値が取り出せることがわかったので、XLOOKUP関数と組み合わせます。 セルR2に入力してあるXLOOKUP関数の数式を修正します。結果はスピルで取り出されるので、1つの数式を入力するだけで済みます。