VLOOKUPで日付検索が #N/A になる原因のほとんどは「片方がシリアル値(本物の日付)・片方が文字列」という型の不一致です。検索値は =VLOOKUP(DATE(2026,4,1), A2:C4, 3, FALSE) のようにDATE関数で渡すのが確実です。
「表にも検索値にも同じ日付が入っているのに、VLOOKUPが#N/Aを返す」——日付検索で最も多いトラブルです。見た目は同じ「2026/4/1」でも、Excel内部では数値(シリアル値)と文字列は別物として扱われます。この記事では原因の確認方法と、ケース別の直し方を解説します。

サンプルデータ
| A | B | C | |
|---|---|---|---|
| 1 | 日付 | 商品 | 入荷数 |
| 2 | 2026/4/1 | りんご | 50 |
| 3 | 2026/4/2 | みかん | 30 |
| 4 | 2026/4/3 | バナナ | 80 |
練習用のExcelファイルはこちらからダウンロードできます:
Excel-vlookup-date-trouble-1.xlsx(ダウンロード)
まず原因を確認する:どちらが文字列か
セルに =ISTEXT(A2) と入力して TRUEなら文字列です。または対象セルの表示形式を「標準」に変えてみてください。45000のような数値に変われば本物の日付(シリアル値)、「2026/4/1」のまま変わらなければ文字列です。
ケース1:検索値の書き方が原因(最多)
=VLOOKUP("2026/4/1", A2:C4, 3, FALSE) のように日付をダブルクォートで囲むと文字列になり、シリアル値の表とは一致しません。次のどちらかに直します。
=VLOOKUP(DATE(2026,4,1), A2:C4, 3, FALSE) (DATE関数で日付型を作る・推奨)=VLOOKUP(DATEVALUE("2026/4/1"), A2:C4, 3, FALSE) (文字列を日付型に変換)
検索値がセル参照(例:E1に日付)の場合は、E1自体が日付型かどうかをISTEXTで確認してください。
ケース2:表側の日付列が文字列
CSVの取り込みなどで表の日付列が文字列になっていることもあります。この場合は、日付列を選択して「データ」タブ→「区切り位置」→そのまま完了、とすると一括で日付型に変換できます。表を直せない場合は、検索値側を文字列に揃える方法もあります:=VLOOKUP(TEXT(E1,"yyyy/m/d"), A2:C4, 3, FALSE)(表の見た目の書式に合わせるのがポイント)。
ケース3:時刻付きの日付
表の日付に「2026/4/1 9:30」のように時刻が含まれていると、日付だけの検索値とは一致しません。作業列で =INT(A2) とすると時刻部分を切り捨てて日付だけにできます。
まとめ
| 症状・原因 | 対処 |
|---|---|
| 検索値を”2026/4/1″と書いている | DATE(2026,4,1) か DATEVALUE で日付型に |
| 表の日付列が文字列 | 区切り位置で日付型に一括変換 |
| 表に時刻が含まれる | INT関数で日付部分だけにする |
| どちらが悪いか不明 | ISTEXTと表示形式「標準」で型を確認 |
▶ こんな場合はこちら:最新の日付のデータを抽出する/VLOOKUP関数の使い方まとめ

コメント