「この受注日は、第何期の担当者の期間に入るのだろう?」「この取引日は、税率がいつ改定された後なので何%を適用すればいいのだろう?」——Excelで日付を扱っていると、特定の日付が「いくつかある区切りのうちどれに該当するか」を調べたい場面がよくあります。前者は日付から担当者を、後者は日付から適用税率を取り出すというように、対象は違っても「ある日付が、境目で区切られたどの区間に入るかを判定して対応する値を返す」という構造は同じです。こうした「日付の範囲(期間)から対応する値を取り出す」処理は、VLOOKUP関数の近似一致という機能を使うときれいに解決できます。
この記事では、VLOOKUPの4番目の引数に「TRUE」を指定して日付の範囲を検索する手順を、具体的なセル配置と数式の例を示しながら順番に説明します。完全一致(FALSE)では範囲検索ができない理由や、近似一致を使うときに必ず守るべき「昇順の並べ替え」についても、つまずきやすいポイントとしてくわしく取り上げます。
なぜ「完全一致(FALSE)」ではなく「近似一致(TRUE)」を使うのか
VLOOKUP関数は、4番目の引数(検索方法)に何を指定するかで動きが大きく変わります。日付の範囲検索でつまずく原因のほとんどが、ここの選び方にあります。
| 4番目の引数 | 検索の動き | 日付の範囲検索に |
|---|---|---|
| FALSE(完全一致) | 検索値とぴったり同じ値だけを探す。開始日にちょうど一致する日なら値が返るが、一致する値がなければ #N/A エラー | 使えない |
| TRUE(近似一致)/省略 | 検索値「以下」で最も大きい値の行を返す | これを使う |
たとえば「2026年5月15日」がどの期間に入るかを調べたいとき、表の中に「2026/5/15」という日付がちょうど存在することはまずありません。FALSE(完全一致)だと「ぴったり同じ日付」を探しに行くため、開始日とちょうど一致する日(たとえば「2026/4/1」)だけは値が返りますが、それ以外のほとんどの日付は一致が見つからずにエラー(#N/A)になります。範囲のどこかに入ればよい、という調べ方にはなりません。
一方でTRUE(近似一致)は、「検索した日付以下で、いちばん近い(最も大きい)開始日」の行を返します。つまり「2026/5/15」を探すと、それより前にある期間の開始日(たとえば「2026/4/1」)の行が選ばれ、その期間に対応する値を取り出せる——これが日付の範囲検索の仕組みです。
表の作り方:開始日を昇順に並べる
近似一致で正しい結果を得るには、検索する列(いちばん左の列)の値が昇順(小さい順)に並んでいることが絶対条件です。Microsoftの公式ヘルプでも、近似一致を使う場合は最初の列を昇順に並べ替える必要があると明記されています。ここが崩れると、エラーは出ないのに間違った値が返ってくるという、いちばん気づきにくい失敗につながります。
ここでは例として、料金期間の表を作ります。A列に各期間の「開始日」を昇順で、B列に対応する「担当者」を入れます。終了日の列は作りません。近似一致は「次の期間が始まる直前まで」を自動的に1つの区切りとして扱うため、開始日だけあれば範囲が決まるからです。新しく表を作るなら、開始日と値の2列だけにしておくのがいちばんシンプルです。
なお、すでにお手元の表に「終了日」の列が入っている場合でも、近似一致はそのまま使えます。終了日の列は計算には使われないだけなので、検索される列(いちばん左)が開始日になっていて昇順に並んでいれば、列番号を「実際に取り出したい値が入っている列」の位置に合わせるだけで動きます。表を作り直す必要はありません。
下の表は、ワークシートのA1からB5に入力した状態のイメージです。
| セル | A列:開始日(昇順) | B列:担当者 |
|---|---|---|
| 1行目 | 開始日 | 担当者 |
| 2行目 | 2026/1/1 | 佐藤 |
| 3行目 | 2026/4/1 | 鈴木 |
| 4行目 | 2026/7/1 | 高橋 |
| 5行目 | 2026/10/1 | 田中 |
この表では「2026/1/1〜3/31は佐藤」「2026/4/1〜6/30は鈴木」というように、各開始日が次の開始日の前日までを受け持ちます。終了日を書かなくても、開始日が昇順に並んでいるだけで期間の区切りが決まります。

VLOOKUPで日付の範囲を検索する手順
表が用意できたら、調べたい日付を入力するセルと、結果を表示するセルを決めて数式を入れます。ここでは調べたい日付をD2セルに入れ、E2セルに担当者を表示する例で進めます。
手順:数式を入力する
- 調べたい日付を入力するセル(例:D2)に、対象の日付を入力します(例:2026/5/15)。
- 結果を表示したいセル(例:E2)をクリックして選びます。
- 半角の「=」から始めて、次の数式を入力します。
=VLOOKUP(D2,A2:B5,2,TRUE) - Enterキーを押すと、E2に「鈴木」と表示されます。2026/5/15は、開始日「2026/4/1」(鈴木)以降で、次の「2026/7/1」より前なので、鈴木の期間に該当するためです。
数式の4つの引数は、それぞれ次の意味です。
| 引数 | この例での指定 | 意味 |
|---|---|---|
| 1つ目:検索値 | D2 | 調べたい日付(2026/5/15)が入ったセル |
| 2つ目:範囲 | A2:B5 | 開始日と担当者が入った表。いちばん左のA列が検索される列 |
| 3つ目:列番号 | 2 | 範囲の左から2列目(B列=担当者)の値を返す |
| 4つ目:検索方法 | TRUE | 近似一致。これがこの記事の核心 |

Enterで確定すると、検索日に応じた担当者が表示されます。D2の日付を「2026/8/20」に変えれば、開始日「2026/7/1」の行が選ばれて「高橋」に切り替わります。日付を入れ替えるだけで、対応する期間の値を取り出せるのが、この方法の便利なところです。
なお、ここでは1つの日付を1か所で調べる例なので、範囲は A2:B5 と相対参照のままで問題ありません。複数の日付をまとめて調べたくて、この数式を下方向にコピーして使うなら、範囲を $A$2:$B$5 のように固定(絶対参照)しておきます。こうしないとコピー先で参照範囲がずれてしまうためです(くわしくは後述のQ3を参照してください)。

うまくいかないときに確認すること
近似一致のVLOOKUPは、エラーが出なくても間違った結果になることがあります。次の点を順に確認してください。
| 症状 | 主な原因と対処 |
|---|---|
| 結果がおかしい(別の期間が返る) | A列が昇順になっていない。日付の昇順に並べ替える |
| #N/A エラーになる | 4番目の引数にFALSEを指定している/検索日が表の最初の開始日より前。TRUEに直す、または最初の期間の開始日を見直す |
| 日付が文字列として入っている | セルが左寄せなら文字列の可能性。「2026/5/15」の形式で入力し直し、日付(数値)として認識させる |
よくある質問
Q1:終了日の列がなくても本当に大丈夫ですか?
はい。近似一致(TRUE)は「検索日以下で最大の開始日」を選ぶため、ある開始日は次の開始日の直前までを自動的に受け持ちます。そのため、新しく表を作るなら開始日を昇順に並べておけば終了日の列は不要です(逆に、すでに終了日の列がある表は、その列を使わないだけでそのまま利用できます。本文の「表の作り方」の項目を参照してください)。なお、期間と期間の間に「すき間」がある(どの期間にも属さない日を分けたい)場合は、すき間の先頭に「対象外」などの行を追加して対応します。
Q2:完全一致(FALSE)ではどうしてエラーになるのですか?
FALSEは「検索値とぴったり同じ値」だけを探す指定です。調べたい日付がたまたま開始日のどれかにちょうど一致すれば、その行の値が返ります。しかし日付の範囲検索では、調べたい日付(例:2026/5/15)が表の開始日にちょうど存在しないことがほとんどなので、その場合は一致が見つからず #N/A エラーになります。「ぴったり一致した日だけ返り、それ以外は全部エラー」では範囲の判定にならないため、範囲で当てはめたいときは必ずTRUEを使います。
Q3:表とは別のシートにある期間表を参照できますか?
できます。範囲の指定を「シート名!A2:B5」のように書きます。たとえば「料金表」というシートを参照するなら =VLOOKUP(D2,料金表!A2:B5,2,TRUE) となります。下方向にコピーして使う場合は、範囲を $A$2:$B$5 のように絶対参照にしておくと、参照先がずれません。
Q4:もっと安全な方法はありますか?
Microsoft 365 や Excel for the web をお使いなら、XLOOKUP関数の「次に小さい値」を探すモードを使うと、並べ替えの条件をやや緩めて同じことができます。ただしVLOOKUPの近似一致は古いバージョンのExcel(Excel 2019など)でも問題なく使えるため、まずはこの記事のVLOOKUP+TRUEを覚えておけば、ほとんどの環境で日付の範囲検索ができます。
まとめ
ExcelのVLOOKUPで日付の範囲を検索するコツは、(1) 4番目の引数をTRUE(近似一致)にすること、(2) 検索される列(開始日)を昇順に並べること、の2点です。完全一致(FALSE)では「ぴったり同じ日付」を探してしまうため範囲検索にはならず、また昇順が崩れているとエラーは出ないのに間違った値が返るため、この2点だけは必ず守ってください。
開始日を昇順に並べ、=VLOOKUP(検索日, 範囲, 列番号, TRUE) の形で数式を入れれば、調べたい日付を入れ替えるだけで対応する期間の値を取り出せます。料金期間や担当期間、四半期の振り分けなど、日付を区間で扱いたい場面でぜひ活用してみてください。
最終確認日: 2026年6月16日(VLOOKUP関数の仕様は安定していますが、お使いのExcelのバージョンや地域設定によって日付の表示形式やメニューの名称が異なる場合があります)


コメント