Excelで最新の日付のデータを抽出|VLOOKUP・MAX・MAXIFSとXLOOKUP

最新の日付の データを取り出す。無料Excelサンプル付き。

日付順に並んでいない表から最新の行を探すには、まずMAXで最大の日付を求め、その日付をXLOOKUPで検索します。商品ごとに最新の行が欲しい場合はMAXIFSで日付を絞り込み、商品と日付の両方を条件にします。

この記事の基本の式
数式=MAX(A2:A6)
練習用Excelファイル(無料ダウンロード)
入荷履歴の練習データです。日付・商品・入荷数の列を確認し、本文の基本式を空いているセルに入力して試せます。Microsoft 365向け。XLOOKUP・FILTER・UNIQUEの例はExcel 2024・2021でも利用できます。本文の対応版もご確認ください。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

最新日付と同じ行の値を返す

A2:A6が日付、B2:B6が商品、C2:C6が入荷数です。説明図では年を2026年にそろえています。

E2・E4に入力:最新の日付と、その日の入荷数を求める
数式=MAX(A2:A6)
=XLOOKUP(MAX(A2:A6),A2:A6,C2:C6,"該当なし",0)
ひとことでMAXで最新の日付を求め、その日付を検索値にして、同じ行の入荷数を取り出す
MAX(A2:A6)
日付の中の最大値(いちばん新しい日付)です。並び順は関係ありません
A2:A6
検索範囲です。日付の列です
C2:C6
戻り範囲です。見つかった行の入荷数を返します
"該当なし"
見つからないときの表示です
データの流れ
① 日付のうち、いちばん新しい日付(4/6)を探す
A24/1A34/3A44/5A54/2A64/6
▼
② 同じ行の入荷数を返す結果
E440
ポイント上の式は4月6日、下の式はその日の入荷数40を返します。MAXの結果が数値で表示されたら、結果セルを日付形式に変更します。元データを日付順に並べ替える必要はありません。
入荷履歴から最新の日付を求める(MAX)式 =MAX(A2:A6) の解説図。E2に入力する
E2に =MAX(A2:A6) を入力。日付はシリアル値なので いちばん大きい値が 最新の日付

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

商品ごとの最新日付を求める

E2にりんごを入力し、F2でその商品の最新日付を計算します。

F2に入力:商品ごとの最新日付を求める
数式=IF(COUNTIF(B2:B6,E2)=0,"",MAXIFS(A2:A6,B2:B6,E2))
ひとことで商品E2の行だけを対象に、日付の最大値を求める。商品が無いときは空白にする
COUNTIF(B2:B6,E2)=0
商品E2が表にあるかを、先に件数で確認します。無いときは空白にします
A2:A6
最大値を求める範囲です。日付の列です
B2:B6
条件の範囲です。商品の列です
E2
条件です。探したい商品(りんごなど)です
補足MAXIFSは、Excel 2019以降・Microsoft 365で使えます。該当する行が無いと、0を返します。
ポイント条件に合う商品がない場合、MAXIFSだけでは0が返るため、先に件数を確認しています。この例のF2は4月5日です。MAXIFSはExcel 2019以降やMicrosoft 365で利用できます。

商品と最新日付の2条件で行を特定する

G2などの空きセルに次の式を入れます。

G2に入力:最新日付と商品の2つの条件で、行を特定する
数式=IF(F2="","該当なし",XLOOKUP(1,(A2:A6=F2)*(B2:B6=E2),C2:C6,"該当なし",0,-1))
ひとことで最新の日付と商品の両方が一致する行の、入荷数を返す
A2:A6=F2
日付がF2(最新日付)と同じ行が TRUE になります
B2:B6=E2
商品がE2と同じ行が TRUE になります
C2:C6
戻り範囲です。入荷数を返します
-1
検索モードです。同じ条件の行が複数あるとき、下の行を優先します
補足日付だけで探すと、同じ日の別の商品の入荷数を返すことがあります。日付と商品の両方を比べて、取り違えを防ぎます。
注意結果は80です。日付だけを検索すると、同日に入荷した別商品の数量を返す可能性があります。日付と商品の両方を比較すれば、その取り違えを防げます。最後の-1は同じ商品・同じ日時が複数あるときに下の行を優先する指定です。

最新日付の全行が欲しい場合

E8に入力:最新日の全行を取り出す
数式=FILTER(A2:C6,A2:A6=MAX(A2:A6),"該当なし")
ひとことで最新の日付と同じ行を、すべて取り出す
A2:C6
取り出す範囲です。日付・商品・入荷数の3列です
A2:A6=MAX(A2:A6)
日付が最新の日付と同じ行が TRUE になります
"該当なし"
該当する行が0件のときの表示です
補足同じ日に複数あれば、複数行が返ります。XLOOKUPは通常1件だけです。
ポイント最新日に複数の商品があるとき、XLOOKUPは通常1件、FILTERは該当する行をすべて返します。合計が欲しいならSUMIFSで数量を合計するなど、欲しい結果を先に決めます。

VLOOKUPで検索する場合

E6に入力:VLOOKUPで最新日の入荷数を探す
数式=VLOOKUP(MAX(A2:A6),A2:C6,3,FALSE)
ひとことで最新の日付を検索値にして、表の3列目(入荷数)を返す
MAX(A2:A6)
検索値です。最新の日付です
A2:C6
検索する表です。日付の列が左端にあります
3
返す列の番号です。表の3列目=入荷数です
FALSE
完全一致です。省略すると近似一致になります
補足商品の条件を組み合わせていないので、表全体の最新日付に対する、先頭の1件です。
ポイント検索対象の日付列を範囲の左端に置き、最後をFALSEで完全一致にします。この例は日付と商品の条件を組み合わせていないため、表全体の最新日付に対する先頭の1件です。商品別の最新とは区別してください。

【実機で検証】最新日付を探す式の落とし穴

最新日付を探す式を、同じ日付が複数ある表や、文字の日付が混ざった表で試しました。

エクセルで最新日付を探す式を同じ日付が2行ある表や文字の日付が混ざった表で試した画面
エクセルで最新日付を探す式を同じ日付が2行ある表や文字の日付が混ざった表で試した画面
場面結果対処
同じ最新日が 2 行ある上の行だけ返す下の行なら第6引数に -1、全部なら FILTER
文字の日付が混ざっているMAX が無視する(エラーなし)文字の日付を日付に変換する
該当する商品がないMAXIFS は 0。日付の表示では 1900/1/0IF で 0 のときの表示を決める
最新日に時刻が付いているINT(MAX(…)) で探すと見つからないMAX の結果のまま探す

文字の日付は、エラーが出ないまま無視されます。試した表では、文字で入れた 2026/12/31 ではなく、2026/10/3 が最新日になりました。結果がおかしいときは、日付の列に文字が混ざっていないかを確かめます。

日付が文字列・時刻付きの場合

注意MAXは参照範囲の文字列日付を数値の日付として比較しません。ISNUMBERで日付が数値かを確認します。また時刻は小数部分なので、最新の「日時」と最新の「日」は異なります。日単位にそろえる必要があるときだけ補助列でINTを使います。

下から検索するだけでよい履歴表は最後に一致する行を検索する方法、日付が一致しない問題は日付検索のエラー対策をご覧ください。

練習用Excelファイル(無料ダウンロード)
入荷履歴の練習データです。日付・商品・入荷数の列を確認し、本文の基本式を空いているセルに入力して試せます。Microsoft 365向け。XLOOKUP・FILTER・UNIQUEの例はExcel 2024・2021でも利用できます。本文の対応版もご確認ください。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

次に読むと理解が深まる記事

参考:Microsoft公式ドキュメント MAX / MAXIFS / XLOOKUP

関数ごとの詳しい使い方は、MAX関数・TODAY・NOW関数・DATE関数で、実際の Excel の画面と練習用ファイルつきで説明しています。

日付や期間で表を検索するときは、Excelで日付・期間を検索する方法もあわせてご覧ください。

最新の日付のデータを抽出するときのよくある質問

エクセルで最新の日付のデータを抽出するVLOOKUPの式は?

=VLOOKUP(MAX(A2:A6),A2:C6,3,FALSE)です。MAXで最新の日付を求めて検索値にし、表の3列目(入荷数)を返します。商品の条件は組み合わせていないので、表全体の最新日付に対する先頭の1件です。

MAXIFSで商品ごとの最新の日付を求めるには?

=IF(COUNTIF(B2:B6,E2)=0,"",MAXIFS(A2:A6,B2:B6,E2))と書きます。商品E2の行だけを対象に、日付の最大値を求めます。該当する行が無いとMAXIFSは0を返すため、先に件数を確認しています。MAXIFSはExcel 2019以降・Microsoft 365で使えます。

同じ最新の日付が2行あるときは、どの行が返りますか?

XLOOKUPは上の行だけを返します。下の行が欲しいときは第6引数に-1を指定します。全部の行が欲しいときは=FILTER(A2:C6,A2:A6=MAX(A2:A6),"該当なし")で、最新日の行をすべて取り出します。

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

この記事を書いた人

コメント

コメントする

目次