shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】VLOOKUPとXLOOKUPで離れた位置の複数列を抽出する方法

ExcelのXLOOKUP関数は、抽出したい列数が多い場合(連続している場合)にVLOOKUP関数より便利です。抽出したい複数列が連続していない場合は、目的やデータの状況によりますがHSTACK関数と組み合わせる方法も有効です。

内容:

HSTACK関数は、Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web で利用可能です。

詳細:HSTACK 関数 - Microsoft サポート

VLOOKUPとXLOOKUPで複数列を抽出する方法の基本

VLOOKUPとXLOOKUPで複数列の値を抽出する方法の比較は次のとおりです。

 

離れた位置の複数列を抽出する方法

離れた位置の複数列を抽出する場合の事例は次のとおりです。

XLOOKUP関数とHSTACK関数を組み合わせた事例

VLOOKUPとXLOOKUPで離れた位置の複数列を抽出例

この事例では、VLOOKUP関数の数式がセルC12、D12(上図a、b)に入力されています。

検索値(B12)について、検索対象の表($B$3:$G$8)の左端列の値を検索し、一致する行の値を取得しています。列番号に「3」と「6」を指定して複数列を抽出しています。

セルC12(上図a) =VLOOKUP(B12,$B$3:$G$8,3,FALSE)

セルD12(上図b) =VLOOKUP(B12,$B$3:$G$8,6,FALSE)

XLOOKUP関数の数式はセルC16(上図c)に入力されています。

HSTACK関数と組み合わせて

HSTACK($D$3:$D$8,$G$3:$G$8)

で2つの列を一つの「戻り配列」としています。

セルC16(上図c)

=XLOOKUP(B16,$B$3:$B$8,HSTACK($D$3:$D$8,$G$3:$G$8),"",0,1)

このようにすることで、離れた位置の複数列を抽出することが可能です。

ただし、目的やデータの状況によりVLOOKUP関数だけで実施した方が作成、維持がしやすい場面もあると思います。

(参考)VLOOKUP関数の範囲にもHSTACK関数を使用可能

VLOOKUP関数の範囲にもHSTACK関数を使用することが可能です。

目的次第ですが、前述のVLOOKUP関数の事例であれば次のような数式で同様の結果を得られます。

セルC12の場合:

=VLOOKUP(B12,HSTACK($B$3:$B$8,$D$3:$D$8,$G$3:$G$8),2,FALSE)

この方法は、例えば、列番号の位置を固定したい場面では有効です。

(参考)XLOOKUP関数の特徴と活用事例

ExcelのXLOOKUP関数は検索列と結果列の選択がしやすいなど、便利な関数です。以下に特徴と活用事例をまとめています。

shikumika.org

以上、ExcelでVLOOKUPとXLOOKUPで離れた位置の複数列を抽出する方法でした。