VLOOKUP・XLOOKUPで重複した値をすべて取り出す方法【完全ガイド】

VLOOKUP・XLOOKUPで重複した値を取り出す方法

Excelで「同じ値が複数あるデータ」を確実に抽出したい、、Excelを触っていると必ずは遭遇するこの場面、VLOOKUP関数やXLOOKUPを使える人こそハマってしまう壁でもあります。

 

この記事で解決できること(最初に結論)

Excelで、こんな経験はありませんか?

  • VLOOKUPで検索すると最初の1件しか出ない
  • XLOOKUPに変えても全部は取れない
  • 「2件目・3件目」も必要なのに方法が分からない
  • 社内PCが古くてFILTER関数が使えない

👉 結論:重複データを取り出す最適解は、実は3つだけです

Excel環境最適な方法なぜこれか
Excel 2021 / Microsoft 365FILTER関数最短・最強・ミスらない
Excel 2019以前INDEX + LARGE全バージョン対応
最新 or 最後の1件だけXLOOKUP検索モードで対応可

※ VLOOKUP単体では不可能です(仕様上の制限)。

 

なぜVLOOKUP・XLOOKUPでは「全部」取れないのか?

VLOOKUPの限界(これは不具合ではない)

VLOOKUPは、検索値が複数見つかっても
👉 「最初に見つかった1件」しか返さない関数です。

  • 2件目
  • 3件目
  • 全件

を指定する引数は存在しません
これはエラーではなく設計上の仕様です。

XLOOKUPでも「全件抽出」はできない

XLOOKUPはVLOOKUPの後継ですが、基本的な考え方は同じです。

=XLOOKUP(検索値, 検索範囲, 戻り範囲, , , 検索モード)

検索モードの違い

  • 1(省略時):最初の一致
  • -1:最後の一致

👉 つまり

  • 取れるのは最初 or 最後の1件だけ
  • 全件を一気に返す機能はありません

 

【最優先】FILTER関数で重複データを一括抽出(最強)

対応環境

  • Excel 2021
  • Microsoft 365

基本構文

=FILTER(抽出範囲, 条件範囲=条件, "該当なし")

例:正社員(○)をすべて抽出

=FILTER(B5:D14, A5:A14="○", "該当なし")

ポイント

  • 数式は1セルだけ
  • 条件に合うデータがすべて自動表示(スピル機能)
  • 元データ更新 → 自動反映

👉 この時点で、VLOOKUPに戻る理由はありません。

重複を除外したい場合(UNIQUE)

=UNIQUE(FILTER(B5:B14, A5:A14="○"))

横並びにしたい場合

=TRANSPOSE(UNIQUE(FILTER(B5:B14, A5:A14="○")))

複数条件も一発で対応

AND条件

=FILTER(B5:D14, (A5:A14="○")*(C5:C14="男性"))

OR条件

=FILTER(B5:D14, (A5:A14="○")+(A5:A14="△"))
 

 

【FILTERが使えない人向け】INDEX + LARGE(全Excel対応)

こんな人向け

  • Excel 2016 / 2019
  • 社内PCでアップデート不可

基本形(コピペ可)

=IFERROR(
  INDEX(B:B,
    SMALL(
      IF($A$5:$A$14="○",ROW($A$5:$A$14)),
      ROW(A1)
    )
  ),
"")

※ 配列数式として入力(Ctrl+Shift+Enter)が必要な場合があります

要素意味
B:B抽出したい列
A5:A14条件範囲
“○”条件
ROW(A1)何番目か(下にコピーすると自動で2,3…と増える)

📌 数式を下に伸ばすだけで、2件目・3件目が表示されます

複数条件(AND)

=IFERROR(
  INDEX(B:B,
    SMALL(
      IF((条件1)*(条件2),ROW(範囲)),
      ROW(A1)
    )
  ),
"")
 

 

【限定用途】XLOOKUPで「最後の1件」だけ取る

最新データだけ欲しい場合

=XLOOKUP(A2, A5:A14, B5:B14, "該当なし", 0, -1)

使いどころ

  • 更新日が一番新しいデータ
  • 履歴の最新レコードだけ必要

👉 全件はいらない場合のみ有効です。

 

VLOOKUPで重複を扱う方法(正直おすすめしない)

方法

  1. 作業列を追加
  2. =COUNTIF($A$5:A5, A5)
  3. → りんご-1 / りんご-2 のように分解
  4. 結合キーで検索
    =VLOOKUP(検索値&"-"&番号, 範囲, 列番号, FALSE)

デメリット

  • 列追加が必須
  • データ構造が壊れやすい
  • メンテナンス性が最悪

👉 今から覚える価値は低いです。

 

実務で即使える応用例

重複しているデータだけ抽出

=FILTER(A5:A14, COUNTIF(A5:A14, A5:A14)>1)

条件付き売上集計(柔軟)

=SUM(FILTER(売上列, カテゴリー列=H2))

👉 SUMIFSより直感的で拡張しやすい

どの方法を選ぶべきか(迷ったらこれ)

状況結論
Excelが新しいFILTER一択
Excelが古いINDEX + SMALL
最新1件だけXLOOKUP
VLOOKUP信者卒業しよう

よくある質問(FAQ)

Q. VLOOKUPで2番目は取れませんか?
A. 取れません。仕様です。
Q. FILTERが使えない場合は?
A. INDEX + SMALLを使ってください。
Q. エラーを消したい
A. IFERRORまたはFILTERの第3引数を使いましょう。

まとめ|重複データ抽出の最適解

  • VLOOKUP / XLOOKUPは万能ではない
  • 全件抽出=FILTER
  • 古いExcel=INDEX + SMALL

Excel作業で
「なんか無理やりやってる感」があるなら、
それは関数選択が間違っているだけです。

FILTERを使える環境なら、今日からVLOOKUP卒業でOK。

著者
古見遊 正

流通業で働きながら、2005年からWindowsを使い続けている80年代生まれのサラリーマン。ExcelとPowerPointを極め、仕事の効率化を追求中。苦手だったWordも克服中!Excelを使いこなせるだけで周囲から『神扱い』されるけれど、そのせいで『システムに詳しい人』だと勘違いされがち。でも、それが新しい知識を得るきっかけになった。そんな経験を活かして、Excel・PowerPoint・Word・Windowsの時短ワザ&仕事術を発信中!

古見遊 正をフォローする
Excel便利技

コメント

タイトルとURLをコピーしました