g721|【Excel】XLOOKUPで最新データを一発検索!VLOOKUPとINDEX/MATCHの時代は終わった?

Excelでのデータ検索といえば、多くの方がVLOOKUP関数を思い浮かべるでしょう。しかし、「特定の条件に一致する一番新しいデータを取り出したい」と思ったとき、VLOOKUPでは少し工夫が必要でした。

そんな悩みを一発で解決してくれるのが、新しい検索関数XLOOKUPです。今回は、添付画像で示されている「特定の会社の最新の発注番号を求める」例を使い、XLOOKUPの強力な機能、特に「逆順検索」について詳しく解説します。

目次

今回のゴール:特定の取引先の「最新の」発注番号を取得する

以下のような「発注履歴」があったとします。この中から、「西瓜電機」の一番新しい発注番号である「1007」をB3セルに表示させることが目標です。

サンプルデータ

以下は、上記画像のExcelデータですので、ダウンロードして練習として使用ください。

Excel-g721-1.xlsx (ダウンロード)

=XLOOKUP(B2, F3:F9, D3:D9, "-", 0, -1)

まずは、練習用に以下のデータをExcelシートにコピー&ペーストしてみましょう。

ABCDEFG
1発注検索発注履歴
2発注者西瓜電機発注番号発注日発注者発注金額
3発注番号(ここに数式を入力)10012015/8/1南瓜自動車2,870,100
410022015/8/5桃電気1,158,300
510032015/8/5無花果工事811,600
610042015/8/7柿商店1,596,700
710052015/8/8苺電機855,000
810062015/8/15梨不動産2,273,400
910072015/8/15西瓜電機1,572,500

解決策:XLOOKUP数式の詳解

セルB3に以下の数式を入力します。

Excel

=XLOOKUP(B2, F3:F9, D3:D9, "-", 0, -1)

この数式が、なぜ最新のデータを取得できるのか、各引数を一つずつ見ていきましょう。

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

  1. 検索値 (lookup_value): B2
    • 何を探すかを指定します。今回はセルB2に入力されている「西瓜電機」です。
  2. 検索範囲 (lookup_array): F3:F9
    • 検索値をどの範囲から探すかを指定します。発注者名がリストアップされているF3:F9が対象です。
  3. 戻り値範囲 (return_array): D3:D9
    • 検索値が見つかった場合に、どの範囲から値を取得してくるかを指定します。今回は発注番号が欲しいので、D3:D9を選択します。VLOOKUPと違い、検索範囲より左側にあっても問題なく取得できます。
  4. [見つからない場合] (if_not_found): "-"
    • 検索値が見つからなかった場合に何を表示するかを指定できます(省略可能)。ここではハイフン(-)を表示するようにしています。IFERROR関数で囲む必要がなく、数式がスッキリします。
  5. [一致モード] (match_mode): 0
    • どのように検索するかを指定します(省略可能)。0は完全一致を意味します。他にも、次に小さい値(-1)や大きい値(1)を探すといった指定も可能です。
  6. [検索モード] (search_mode): -1
    • これが今回の最重要ポイントです! 検索の方向を指定します(省略可能)。
      • 1: 先頭から末尾へ検索(デフォルト)
      • -1: 末尾から先頭へ検索(逆順検索)
    この検索モード-1を指定することで、Excelはリストの下から上へと「西瓜電機」を探し始めます。そのため、最初に見つかる「西瓜電機」(F9セル)が、一番新しいデータということになり、対応する発注番号「1007」を返してくれるのです。

まとめ

XLOOKUP関数の検索モードを使えば、これまで配列数式などを使わないと難しかった「最新データの検索」が驚くほど簡単になります。

  • 下から(末尾から)検索できるので、日付順に並んだデータから最新のものを簡単に見つけられる。
  • VLOOKUPのように検索列が一番左にある必要がない。
  • IFERRORを使わずにエラー処理を組み込める。

など、XLOOKUPは従来の検索関数を圧倒する柔軟性とパワーを持っています。ぜひこの機会にマスターして、日々の業務効率をアップさせてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次