shikumika’s diary

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

【Excel】VLOOKUP関数で検索対象の表に重複データがある場合の対応

ExcelのVLOOKUP関数で検索対象の表に重複データがある場合、先に一致した値の行を取得します。そのため、意図しない計算結果になることがあります。

内容:

検索対象の表に重複データがある場合の事例

具体的な事例は下図のとおりです。

セル範囲$B$3:$C$8(下図でマスタ表に該当)の左端列(B列)は重複した値があります。取得対象の値(C列)の値は全て違います。

このような場合、VLOOKUP関数の計算結果は先に一致した値の行を取得した結果となります(下図のセルF4、F5)。

重複した値がある場合、先に一致した値の行を取得している

検索対象の表に重複データがある場合、先に一致した値の行を取得している

この事例では、検索対象の表の左端列は重複した値があり、取得対象の値は全て違います。

この認識があって先に一致した値の行を取得する場合は良いですが、

  • C列に同じ値が入っていると勘違い
  • 検索対象の表に重複データがないと勘違い

をしている場合は、意図しない計算結果となりミスが発生します。

shikumika.org

よって、検索対象の表(左端列)に重複した値がないかを確認し、必要に応じて重複削除などの対応をします。

VLOOKUP関数は先に一致のみだが、
XLOOKUP関数は最後に一致した値も取得可能

VLOOKUP関数の改良版であるXLOOKUP関数は、最後に一致した値も取得可能です。

検索列と結果列の選択がしやすいなど、VLOOKUP関数と比較して便利な関数です。

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

XLOOKUP関数は、次の構文です。

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

XLOOKUP 関数 - Microsoft サポート

具体的な使用例は下図のとおりです。XLOOKUP関数の構文で [検索モード]の指定を変更することで、「先に一致」や「最後に一致」などを指定できます。

XLOOKUP関数の検索モードを設定しています

XLOOKUP関数で「先に一致」と「最後に一致」の取得事例

数式作成時、[検索モード]で「1‐先頭から末尾へ検索」や「-1‐末尾から先頭へ検索」など選択可能です。

検索モードで「1‐先頭から末尾へ検索」や「-1‐末尾から先頭へ検索」などを選択できます。

XLOOKUP関数の数式作成イメージ

以上、ExcelでVLOOKUP関数で検索対象の表に重複データがある場合の対応でした。

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

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

shikumika.org