=DATE(2026,3,15)は2026年3月15日の日付を返します。3つの引数は年、月、日の順で、数値かセル参照で指定します。逆の働きをするYEAR、MONTH、DAYは、日付をそれらの数に分解します。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Year | Month | Day | Date |
| 2 | 2026 | 3 | 15 | 2026-03-15 |
| 3 | 2026 | 12 | 31 | 2026-12-31 |
| 4 | 2027 | 1 | 1 | 2027-01-01 |
| 5 | 2024 | 2 | 29 | 2024-02-29 |
各行が、Excelで並べ替え、引き算、書式設定ができる本物の日付になります。B2の月を7に変えると、D2は2026-07-15になります。国ごとの日付の書き方に関係なく、順番は年が先と決まっています。=DATE(15,3,2026)は3月15日になりません。
YEAR、MONTH、DAY: 日付を分解する
どれも日付の一部を数値で返します。年や月でグループ化したり絞り込んだりするときの定番の方法で、たとえばSUMIFやピボットテーブルが読む作業列に使います。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Date | Year | Month | Day | Month name |
| 2 | 2026-03-15 | 2026 | 3 | 15 | March |
| 3 | 2025-11-02 | 2025 | 11 | 2 | November |
| 4 | 2024-02-29 | 2024 | 2 | 29 | February |
1行目は2026、3、15になります。MONTHは数値を返します。月の名前には"mmmm"(March)や"mmm"(Mar)を指定したTEXTを使います。TEXT関数を参照してください。
13月と0日: DATEの繰り越し
DATEは12より大きい月や、月末を超える日を受け付け、カレンダーと同じように余りを先へ繰り越します。13月は翌年の1月で、0日は前月の末日です。そのため、どの月の1日も末日も1行の数式で出せます。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Formula | Result | Date | |
| 2 | Month 13 | 2027-01-01 | 2026-02-17 | |
| 3 | February 30 | 2026-03-02 | ||
| 4 | Day 0 of March | 2026-02-28 | ||
| 5 | First of the month | 2026-02-01 | ||
| 6 | Last of the month | 2026-02-28 |
DATE(2026,13,1)は2027-01-01、2月30日は2026-03-02になり、3月の0日は2026-02-28です。5行目と6行目はD2の日付を使っています。好きな日付に変えると、うるう年も含めてその月の1日と末日が求まります(2024-02-17で試してください)。月末にはEOMONTHも使えます。日付に日数や月を足すを参照してください。
文字列を日付に変換する
ほかのシステムから取り込んだ日付は、文字列で届くことがよくあります。Excelは文字列では日付の計算ができないので、先に変換します。DATEVALUEは2026-03-15のようにExcelが認識できる形式の文字列を読みます。20260315のようなコードや15.03.2026のようなヨーロッパ式の日付は、LEFT、MID、RIGHTで切り分け、DATEで組み立て直す必要があります。
| A | B | |
|---|---|---|
| 1 | Text | Date |
| 2 | 2026-03-15 | 2026-03-15 |
| 3 | 20260315 | 2026-03-15 |
| 4 | 15.03.2026 | 2026-03-15 |
3行とも2026-03-15を返します。LEFT、MID、RIGHTは文字列を返しますが、DATEは"2026"や"03"を自分で数値に変換します。DATEVALUEはシステムの日付の設定に左右されます。"3/15/2026"は米国の設定では3月15日と読まれ、日を先に書く地域では#VALUE!で失敗します。1回きりの列なら、データ > 区切り位置で数式を使わずにその場で変換できます。3つ目の手順で「日付」を選び、文字列の並び順を選びます(15.03.2026ならDMY)。
練習: 日付を作る
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Year | Month | Day | Date |
| 2 | 2026 | 4 | 17 |
やってみよう: D2に、A2の年、B2の月、C2の日から日付を作ってください。
| A | B | |
|---|---|---|
| 1 | Code | Date |
| 2 | 20260917 |
やってみよう: A2には日付がyyyymmdd形式の文字列で入っています。B2で、それを本物の日付に変えてください。
よくある間違い: 2桁の年
DATEは0から1899までの年を1900からのずれとして読むので、2桁の年はエラーも出ずに違う世紀になります。
| A | B | C | |
|---|---|---|---|
| 1 | Year | DATE | Fixed |
| 2 | 26 | 1926-03-15 | 2026-03-15 |
=DATE(26,3,15)は2026年ではなく1926-03-15を返します。元のデータの年が2桁なら、C2のように2000を足すか、できれば元のデータを直して4桁の年にしてください。
よくある質問
ExcelのDATE関数はどう動きますか?
=DATE(year,month,day)は3つの数から日付を返します。=DATE(2026,3,15)は2026年3月15日です。引数は=DATE(A2,B2,C2)のようにセル参照でもかまいません。
日付から年、月、日を取り出すには?
=YEAR(A2)、=MONTH(A2)、=DAY(A2)がそれぞれを数値で返します。月の名前なら=TEXT(A2,"mmmm")を使います。
Excelで月の1日を求めるには?
=DATE(YEAR(A2),MONTH(A2),1)はA2の月の1日を返します。=DATE(YEAR(A2),MONTH(A2)+1,0)は末日を返します。ある月の0日は前の月の末日だからです。
Excelで文字列を日付に変換するには?
Excelが認識できる形式の文字列なら、=DATEVALUE(A2)で変換できます。20260315のようなコードなら、部分を切り出して日付を作り直します:=DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))。
DATEの月が12より大きいとどうなりますか?
DATEはそれを翌年に繰り越します。=DATE(2026,13,1)は2027-01-01、=DATE(2026,14,1)は2027-02-01です。日も同じように繰り越され、0やマイナスの値は過去に戻ります。