Excelでのデータ検索といえば、多くの方がVLOOKUP
関数を思い浮かべるでしょう。しかし、「特定の条件に一致する一番新しいデータを取り出したい」と思ったとき、VLOOKUP
では少し工夫が必要でした。
そんな悩みを一発で解決してくれるのが、新しい検索関数XLOOKUP
です。今回は、添付画像で示されている「特定の会社の最新の発注番号を求める」例を使い、XLOOKUP
の強力な機能、特に「逆順検索」について詳しく解説します。
目次
今回のゴール:特定の取引先の「最新の」発注番号を取得する
以下のような「発注履歴」があったとします。この中から、「西瓜電機」の一番新しい発注番号である「1007」をB3セルに表示させることが目標です。
サンプルデータ

以下は、上記画像のExcelデータですので、ダウンロードして練習として使用ください。
Excel-g721-1.xlsx (ダウンロード)
=XLOOKUP(B2, F3:F9, D3:D9, "-", 0, -1)
まずは、練習用に以下のデータをExcelシートにコピー&ペーストしてみましょう。
A | B | C | D | E | F | G | |
1 | 発注検索 | 発注履歴 | |||||
2 | 発注者 | 西瓜電機 | 発注番号 | 発注日 | 発注者 | 発注金額 | |
3 | 発注番号 | (ここに数式を入力) | 1001 | 2015/8/1 | 南瓜自動車 | 2,870,100 | |
4 | 1002 | 2015/8/5 | 桃電気 | 1,158,300 | |||
5 | 1003 | 2015/8/5 | 無花果工事 | 811,600 | |||
6 | 1004 | 2015/8/7 | 柿商店 | 1,596,700 | |||
7 | 1005 | 2015/8/8 | 苺電機 | 855,000 | |||
8 | 1006 | 2015/8/15 | 梨不動産 | 2,273,400 | |||
9 | 1007 | 2015/8/15 | 西瓜電機 | 1,572,500 |
解決策:XLOOKUP数式の詳解
セルB3に以下の数式を入力します。
Excel
=XLOOKUP(B2, F3:F9, D3:D9, "-", 0, -1)
この数式が、なぜ最新のデータを取得できるのか、各引数を一つずつ見ていきましょう。
XLOOKUP(検索値,検索範囲,戻り値範囲,[見つからない場合],[一致モード],[検索モード])
- 検索値 (lookup_value):
B2
- 何を探すかを指定します。今回はセル
B2
に入力されている「西瓜電機」です。
- 何を探すかを指定します。今回はセル
- 検索範囲 (lookup_array):
F3:F9
- 検索値をどの範囲から探すかを指定します。発注者名がリストアップされている
F3:F9
が対象です。
- 検索値をどの範囲から探すかを指定します。発注者名がリストアップされている
- 戻り値範囲 (return_array):
D3:D9
- 検索値が見つかった場合に、どの範囲から値を取得してくるかを指定します。今回は発注番号が欲しいので、
D3:D9
を選択します。VLOOKUP
と違い、検索範囲より左側にあっても問題なく取得できます。
- 検索値が見つかった場合に、どの範囲から値を取得してくるかを指定します。今回は発注番号が欲しいので、
- [見つからない場合] (if_not_found):
"-"
- 検索値が見つからなかった場合に何を表示するかを指定できます(省略可能)。ここではハイフン(
-
)を表示するようにしています。IFERROR
関数で囲む必要がなく、数式がスッキリします。
- 検索値が見つからなかった場合に何を表示するかを指定できます(省略可能)。ここではハイフン(
- [一致モード] (match_mode):
0
- どのように検索するかを指定します(省略可能)。
0
は完全一致を意味します。他にも、次に小さい値(-1)や大きい値(1)を探すといった指定も可能です。
- どのように検索するかを指定します(省略可能)。
- [検索モード] (search_mode):
-1
- これが今回の最重要ポイントです! 検索の方向を指定します(省略可能)。
1
: 先頭から末尾へ検索(デフォルト)-1
: 末尾から先頭へ検索(逆順検索)
検索モード
に-1
を指定することで、Excelはリストの下から上へと「西瓜電機」を探し始めます。そのため、最初に見つかる「西瓜電機」(F9セル)が、一番新しいデータということになり、対応する発注番号「1007」を返してくれるのです。 - これが今回の最重要ポイントです! 検索の方向を指定します(省略可能)。
まとめ
XLOOKUP
関数の検索モード
を使えば、これまで配列数式などを使わないと難しかった「最新データの検索」が驚くほど簡単になります。
- 下から(末尾から)検索できるので、日付順に並んだデータから最新のものを簡単に見つけられる。
VLOOKUP
のように検索列が一番左にある必要がない。IFERROR
を使わずにエラー処理を組み込める。
など、XLOOKUP
は従来の検索関数を圧倒する柔軟性とパワーを持っています。ぜひこの機会にマスターして、日々の業務効率をアップさせてください!
コメント