shikumika’s diary

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

【Excel】VLOOKUPとXLOOKUPで複数列の値を抽出する方法の比較

ExcelのVLOOKUP関数と、その改良版であるXLOOKUP関数で複数列の値を抽出する方法の比較です。

抽出したい列数が多い場合(連続している場合)はXLOOKUP関数が便利です。なお、抽出したい複数列が連続していない場合は、目的やデータの状況によります。

内容:

XLOOKUP関数は、Excel 2016 および Excel 2019 では使用できず、新しいバージョンの Excelから使用可能です。

連続した複数列の値を抽出する方法

抽出したい列数が連続している場合の「VLOOKUPとXLOOKUPで複数列の抽出例」は次のとおりです。

連続した複数列の値を抽出する数式の計算結果例

VLOOKUPとXLOOKUPで複数列の抽出例

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

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

セルG4(上図a) =VLOOKUP(F4,$B$3:$D$8,2,FALSE)
セルH4(上図b) =VLOOKUP(F4,$B$3:$D$8,3,FALSE)

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

なお、XLOOKUP関数は次の構文で、「戻り配列」を複数列の範囲とすることで、一つの数式で複数列の値を抽出することが可能です。

=XLOOKUP(検索値, 検索範囲, 戻り配列, [見つからない場合], [一致モード], [検索モード])

XLOOKUP 関数 - Microsoft サポート

このように、XLOOKUP関数は隣接する他のセルにも値を表示する関数なので、セルH8(上図d)に数式は入力していません。

セルG8(上図c) =XLOOKUP(F8,$B$3:$B$8,$C$3:$D$8,"",0,1)

抽出したい列数が多い場合(連続している場合)はXLOOKUP関数が便利です。

VLOOKUP関数と配列数式の組み合わせ(非推奨)

Excelには配列数式という機能があり、VLOOKUP関数でも次のような一つの数式で複数範囲に結果を戻す方法はあります。

{=VLOOKUP(F4,$B$3:$D$8,{2,3},FALSE)}

ただし、使用する人は少ない印象で、他者と共有するようなファイルには不向きと思います。もし、配列数式に関心がある場合は以下をご覧ください。

support.microsoft.com

連続しない複数列の値を抽出する方法

連続しない複数列の場合、VLOOKUP関数は列番号の指定を変更するだけで抽出できます。

XLOOKUP関数も、「戻り配列」を変更した数式を一つずつ作成するなどが必要となるため、作業性は目的やデータの状況によります。

一つの解決策として、XLOOKUP関数とHSTACK関数を組み合わせる方法も場面によっては有効で次のとおりです。

shikumika.org

参考情報

複数列の抽出スピードは、XLOOKUP関数が遅い時あり

大量データの場合、XLOOKUP関数で複数列の抽出時間にストレスを感じることがあります。以下は、そのケースで「VLOOKUP関数で1列ずつ抽出する方法」が良かった事例です。

shikumika.org

複数条件で検索する方法(スピルの活用)

複数列の値を抽出ではなく、複数条件で検索した場合の方法です。

shikumika.org

XLOOKUP関数の特徴と活用事例

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

shikumika.org

以上、ExcelでVLOOKUPとXLOOKUPで複数列の値を抽出する方法の比較でした。