Menu

DATE関数の使い方: 年・月・日から日付を作る

=DATE(2026,3,15)は、年、月、日から2026年3月15日の日付を返します。YEAR、MONTH、DAYは日付を分解し、DATEは13月を翌年に繰り越します。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=DATE(2026,3,15)は2026年3月15日の日付を返します。3つの引数は年、月、日の順で、数値かセル参照で指定します。逆の働きをするYEAR、MONTH、DAYは、日付をそれらの数に分解します。

3つの列から日付を作る
D2
ABCD
1YearMonthDayDate
220263152026-03-15
3202612312026-12-31
42027112027-01-01
520242292024-02-29
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

各行が、Excelで並べ替え、引き算、書式設定ができる本物の日付になります。B2の月を7に変えると、D2は2026-07-15になります。国ごとの日付の書き方に関係なく、順番は年が先と決まっています。=DATE(15,3,2026)は3月15日になりません。

YEAR、MONTH、DAY: 日付を分解する

どれも日付の一部を数値で返します。年や月でグループ化したり絞り込んだりするときの定番の方法で、たとえばSUMIFやピボットテーブルが読む作業列に使います。

日付の部分
B2
ABCDE
1DateYearMonthDayMonth name
22026-03-152026315March
32025-11-022025112November
42024-02-292024229February
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

1行目は2026、3、15になります。MONTHは数値を返します。月の名前には"mmmm"(March)や"mmm"(Mar)を指定したTEXTを使います。TEXT関数を参照してください。

13月と0日: DATEの繰り越し

DATEは12より大きい月や、月末を超える日を受け付け、カレンダーと同じように余りを先へ繰り越します。13月は翌年の1月で、0日は前月の末日です。そのため、どの月の1日も末日も1行の数式で出せます。

繰り越し、月初、月末
B5
ABCD
1FormulaResultDate
2Month 132027-01-012026-02-17
3February 302026-03-02
4Day 0 of March2026-02-28
5First of the month2026-02-01
6Last of the month2026-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で組み立て直す必要があります。

日付になるべき文字列
B3
AB
1TextDate
22026-03-152026-03-15
3202603152026-03-15
415.03.20262026-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)。

練習: 日付を作る

やってみよう: 3つの列から日付へ
D2
ABCD
1YearMonthDayDate
22026417
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: D2に、A2の年、B2の月、C2の日から日付を作ってください。

やってみよう: 日付のコード
B2
AB
1CodeDate
220260917
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: A2には日付がyyyymmdd形式の文字列で入っています。B2で、それを本物の日付に変えてください。

よくある間違い: 2桁の年

DATEは0から1899までの年を1900からのずれとして読むので、2桁の年はエラーも出ずに違う世紀になります。

2桁の年
B2
ABC
1YearDATEFixed
2261926-03-152026-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やマイナスの値は過去に戻ります。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める