- 
Home » 
 
- 
エクセル関数一覧表 » 
 
- 
Excel関数の目次 » 
 
- 日付の関数の使い方 
 
- エクセルでの日付に関する様々な関数について説明しています。 日付を扱った計算を行うときに便利な関数が種々あります。
  目的の合った関数を利用することで、シンプルな計算式を作成することができます。
 
更新:2025/2/24;作成:2005/10/1
  - 日付データは数値(シリアル値)で管理されていますので 足し算や引き算が可能です。
  
    - なお、日付の入力方法はこちらです→日付の入力
 - (注)セルの表示形式によって表示が異なります。
表示の変更は、セルの書式設定ダイアログボックスで設定します。
   
  
 
  - セルの表示形式 は[ホーム]タブの数値グループにあるダイアログボックス起動ツールをクリックします。
  セルの書式設定ダイアログボックスを開きます。
ショートカットキーは [Ctrl]+[1] です。 (テンキーの1は使用不可です)
  
  
  
    - 年月日など日付を表示したい時   :表示形式を「日付」 
 - 日数などシリアル値で表示したい時 :表示形式は「標準」 
 - 日付の表示形式についてはこちらを参照→日付の表示形式
  
    
 
 
日付や時刻を表示する   topへ
 トゥデイ
=TODAY() :今日の日付を表示する。ショートカットキーでは[Ctrl]+[;] (セミコロン)
 ナウ
=NOW()   :今日の日付と時刻を表示する。ショートカットキーでは[Ctrl]+「:」(コロン)
  - これらの関数はファイルを開いた時に再計算され、そのときの日付・時刻が表示されます。つまり、開いた時の日時に変化します。
  
 - 入力時の日付を固定したいケースでは[Ctrl]+[;] 時刻は[Ctrl]+[:] を使って日付や時刻を入力します。
 
【問題】
  - 今日の日付をB2セルに、今の時刻をC2セルに表示しなさい。
  
 - B3セルに明日の日付を表示しなさい。
  
 - C3セルに1時間後の時刻を表示しなさい。
 
【解答例】
  - 
  
    
      
        |   | 
        B | 
        C | 
      
      
        | 2 | 
        =TODAY() | 
        =NOW() | 
      
      
        | 3 | 
        =TODAY()+1 | 
        =NOW()+"1:00" | 
      
    
  
 
【補足説明】
  - 上記が標準の表示状態です。パソコンの内蔵時計の値が使用されます。
  パソコンの内蔵時計の設定が違っているとこの値も変化します。  - セルの表示形式を変更して希望の形式にします。
  
    - 日付の表示形式についてはこちらへ
    
 - 時刻の表示形式については日付と同様です。
  
 
  
 
  - =TODAY() や =NOW() は入力されたときやブックを開いた時(再計算が行われた時)の日にちや時刻が表示されます。 
 - 今現在の日にちや時刻に表示を変えたい場合には「再計算」機能を使います。 
 - 再計算のショートカットキー
  
    
| [F9] キー | 
開いているすべてのブックの中で、最後に計算されたとき以降に変更された数式と、その数式を参照する数式を再計算します。 | 
    
    
      | [SHIFT]+[F9] キー  | 
      作業中のワークシートの中で、最後に計算されたとき以降に変更された数式と、その数式を参照する数式を再計算します。 | 
    
    
      | [Ctrl]+[Alt]+[F9]キー | 
      開いているすべてのブックの数式を再計算します。最後に計算されたとき以降に変更されたかどうかは問いません。 | 
    
    
      | [Ctrl]+[Shift]+[Alt]+[F9]キー | 
      参照先の数式を再度チェックし、開いているすべてのブックの数式を再計算します。最後に計算されたとき以降に変更されたかどうかは問いません。 | 
    
  
 
開始日と終了日との日数差を調べて、指定した単位で表示します    topへ
 デイトディフ
=DATEDIF(開始日,終了日,"単位")
      開始日と終了日との日数差を調べて、指定した単位で表示します
    ”単位” Y:年数  M:月数  D:日数
         YM:年数表示での端数の月数
         YD:         端数の日数
         MD:月数表示での端数の日数
     (注)単位は「 ” 」(二重引用符)でくくります。
【問題1】次の人の年齢を求めましょう。基準日はF2セルです。
  - 
  
    
      
        |   | 
        B | 
        C | 
        D | 
        E | 
        F | 
        G | 
      
      
        | 2 | 
        氏名 | 
        生年月日 | 
        年齢 | 
         | 
        2025/2/24 | 
        現在 | 
      
      
        | 3 | 
        山田太郎 | 
        1970/10/11 | 
        49 | 
        才 | 
        6 | 
        ヶ月 | 
      
      
        | 4 | 
        鈴木一郎 | 
        1975/12/21 | 
        44 | 
        才 | 
        4 | 
        ヶ月 | 
      
    
  
 
【問題1の解答例】
- DATEDIF関数は下図のように関数のオートコンプリート機能では表示されませんので、手入力してください。
  
   - DATEDIF関数を使います。端数の月数は"YM"です。
  
    - 今日現在の場合は =DATEDIF(C3,TODAY(),"Y") となります。 
  
 
  D3セルは =DATEDIF(C3,$F$2,"Y")
  F3セルは =DATEDIF(C3,$F$2,"YM")
  と入力します。
   - Spillが利用できるExcel for Microsoft365,Excel2021以降なら
  D3セルは =DATEDIF(C3:C4,F2,"Y")
  F3セルは =DATEDIF(C3:C4,F2,"YM")
  と入力します。
  
 
  - 一つのセルに表示したい場合、演算子『&』を使い、文字列をつなぎます。
  
  D3セルには =DATEDIF(C3,$F$2,"Y")&"才"&DATEDIF(C3,$F$2,"YM")&"ヶ月" と入力します。
  または、=CONCAT(DATEDIF(C3,$F$2,"Y"),"才",DATEDIF(C3,$F$2,"YM"),"ヶ月") とします。
   - Spillが使える場合は、
  =DATEDIF(C3:C4,F2,"Y")&"才"&DATEDIF(C3:C4,F2,"YM")&"ヶ月"
  とします。
  
 
  
    
      DATEDIF関数に関しての注意事項
      
        -  (注)この関数はHELPに記載されていません(Excel2002)。LOTUSとの互換用に採用された関数です。
 
         (注)”YD"や”MD"で日数を計算させると、間違った値になるバグがあるようです。注意してください。 
        (Excel for Microsoft365でも再現されます。記:2025/2/24) 
        この例ではC列の答えは「10」が正解です。(画像は2025/2/24に作成しました) 
          - [参考資料]
        
- [特定のシナリオで誤った計算結果を返すことがあります。]と注意書きがあります。
 
DATEDIF 関数 - Office サポート 
https://support.office.com/ja-jp/article/DATEDIF-%E9%96%A2%E6%95%B0-25dba1a4-2812-480b-84dd-8b32a451b35c
 - [XL2002]ヘルプおよび関数ウィザードに表示されない関数について
 
          http://support.microsoft.com/kb/418360/ja
        
        
  
        
         - Excel2007とExcel2003以前とでDATEDIF関数の結果が異なるようです
 
        なんかややこしいことになっているようです。角田さんのサイトの「Excel2003以前と、Excel2007では DATEDIF 関数の算出結果が異なります」に解説などがありますのでそちらを参照してください。
      
        
       | 
    
  
日付データ(シリアル値)から「年」「月」「日」を取り出す  topへ
 イヤー
=YEAR(日付)  :『年』を返します。1900 〜 9999 (年) の範囲の整数となります。
 マンス
=MONTH(日付) :『月』を返します。1 〜 12 (月) の範囲の整数となります。
 デイ
=DAY(日付)  :『日』を返します。1 〜 31 の範囲の整数となります。
【問題1】
  - C3:C4セルに入力された日付データから『年』『月』『日』の数をD3:F4セルに取り出しなさい。
  
なお、C3:C4セルにはシリアル値で入力されています。
  
|   | 
B | 
C | 
D | 
E | 
F | 
| 2 | 
氏名 | 
生年月日 | 
年 | 
月 | 
日 | 
| 3 | 
山田太郎 | 
1970/10/11 | 
1970 | 
10 | 
11 | 
| 4 | 
鈴木一郎 | 
1975/12/21 | 
1975 | 
12 | 
21 | 
 
【解答1例】
  - D3セルに =YEAR(C3)、E3セルに =MONTH(C3)、F3セルに =DAY(C3)と入力して、下方向へ数式をコピーします。
  Spillが利用できる場合はD3セルに =YEAR(C3:C4)、E3セルに =MONTH(C3:C4)、F3セルに =DAY(C3:C4)と入力します。
  
 
文字列の日付から年月日を取出す
  - C3:C4セルの日付が文字列であったら、YEAR、MONTH、DAY関数は使えず、#VALUE! エラーになります。
  そんな時には、文字列の操作関数を使います。
  
    - (注)下の表はExcelへエクスポート(コピー&貼り付け)した時、C3:C4セルを文字列とするため、ひらがなを使用しています。
    「1970年10月11日」と入力されると、Excelが日付データと判断してシリアル値に変換するためです。
   
  
    
      
        |   | 
        B | 
        C | 
        D | 
        E | 
        F | 
      
      
        | 2 | 
        氏名 | 
        生年月日 | 
        年 | 
        月 | 
        日 | 
      
      
        | 3 | 
        山田太郎 | 
        1970ねん10がつ11 | 
        =LEFT(C3,4) | 
        =MID(C3,7,2) | 
        =RIGHT(C3,2) | 
      
      
        | 4 | 
        鈴木一郎 | 
        1975ねん12がつ21 | 
        =LEFT(C4,4) | 
        =MID(C4,7,2) | 
        =RIGHT(C4,2) | 
      
    
  
   - Spillが使える場合は、=LEFT(C3:C4,4)、=MID(C3:C4,7,2)、=RIGHT(C3:C4,2)と入力します。
  
 
空白セルを参照する時の注意
  - 空白のセルを参照すると、YEARは「1900」、MONTHは「1」、DAYは「0」を返します。
  
シリアル値は1900年1月1日が 1 と設定しているので、空欄は値が 0 となるので、1900/1/1の1日前 1900/1/0 とみなされます。
=IF(B2="","",YEAR(B2)) とか =IF(B2<>"",YEAR(B2),"") のように回避します。
|   | 
B | 
C | 
D | 
| 2 | 
 | 
=YEAR(B2) | 
1900 | 
| 3 | 
 | 
=MONTH(B3) | 
1 | 
| 4 | 
 | 
=DAY(B4) | 
0 | 
 
元号の数値(和暦)を求めたい時
  - Excelでは西暦で日付は管理されています。
西暦から元号の数値を求めるには表示形式を利用する方法があります。
  カレンダーの種類で「和暦」を選択します。
  C列にはB列と同じ日付を入力しています。
  ここでは =B3:B7 としています。
  
   - ただし、元号なしで明治/大正/昭和/平成にまたがるデータを扱う場合は、区別が付かなくなるので注意が必要です。
  =TEXT(B3,"e")*1 と表示形式 e を利用して求めています。
  TEXT関数では文字列が返されますので、*1 と乗算をすることで数値データに変換しています。
  =TEXT(B3,"r")*1でもOKです。
   - Spillが使える場合は、=TEXT(B3:B7,"e")*1 としています。
  
 
【問題1】
  - C3:E4セルにそれぞれ年月日の数値が入力されています。
これらの数値を使って、F3:F4セルに日付を表示しなさい。
|   | 
B | 
C | 
D | 
E | 
F | 
| 2 | 
氏名 | 
年 | 
月 | 
日 | 
年月日 | 
| 3 | 
山田太郎 | 
1970 | 
10 | 
11 | 
1970/10/11 | 
| 4 | 
鈴木一郎 | 
1975 | 
12 | 
22 | 
1975/12/22 | 
 
【問題1の解答例】
  - F3セルに =DATE(C3,D3,E3) と入力します。
  Spillが使える場合は =DATE(C3:C4,D3:D4,E3:E4) とします。
  
 
【問題2】
  - B2セルには 2025/1/1 と入力して、表示形式を ggge"年" としています。
  Microsoftのユーザー定義を使うと日本語をあらわすロケールIDが付け加えられます。
  [$-ja-JP-x-gannen]ggge"年" となります。  -  C、D列の計算をしなさい
  
  
         | 
        B | 
        C | 
        D | 
      
  
        | 2 | 
        令和7年 | 
        (法事早見表) | 
         | 
      
  
        | 3 | 
        年忌 | 
        死去年 | 
         | 
      
  
        | 4 | 
        一周忌 | 
        令和6年 | 
        2024年 | 
      
  
        | 5 | 
        三回忌 | 
        令和5年 | 
        2023年 | 
      
  
        | 6 | 
        七回忌 | 
        平成31年 | 
        2019年 | 
      
  
        | 7 | 
        十三回忌 | 
        平成25年 | 
        2013年 | 
      
  
        | 8 | 
        十七回忌 | 
        平成21年 | 
        2009年 | 
      
 
 
【問題2の解答例】
  - B2セルの日付から年を取り出し、DATE関数で年の数を引き算しています。
  
 - C4セルに =DATE(YEAR(B2)-1,1,1)
  C5セルに =DATE(YEAR(B2)-2,1,1)
  C6セルに =DATE(YEAR(B2)-6,1,1)
  C7セルに =DATE(YEAR(B2)-12,1,1)
  C8セルに =DATE(YEAR(B2)-16,1,1)
  と入力して、表示形式を ggge"年" としています。
  D4セルには =C4:C7 と入力して、表示形式を yyyy"年" としています。
  
 
  - 通常はExcelが日付データと認識したら、内部でシリアル値に変換しますのであまり使うことはないかもしれません。
  
他のソフトからデータをインポートした時に文字列となっていた場合などに使用します。
 
【問題】
  - B2:C3セルに日付が文字列で入力されています。10日後の日付をD,E列に表示しなさい。 
C列は文字列として入力されているものとします。
- C2セルには「'10月10日」、C3セルには「'11月11日」のように頭にアポストロフィ([Shift]+[7]キー)を入力します。
なお、入力後にはシート上ではアポストロフィは表示されません。数式バーではアポストロフィが入力されているのが確認できます。
  
 
|   | 
B | 
 | D | 
E | 
| 2 | 
2024年 | 
'10月10日 | 
2024/10/20 | 
令和6年10月20日 | 
| 3 | 
令和6年 | 
'10月25日 | 
2024/11/4 | 
令和6年11月4日 | 
 
【解答例】
- 年と月日をつなげて日付の文字列を作ります。DATEVALUE関数でシリアル値に変更して計算します。
  
  
- Excelは日付データと認識できるものは内部で日付として(シリアル値に変換して)計算しますので、D2セルは =(B2&C2)+10 とすることも計算できます。
よって、数式でDATEVALUE関数を使うことは少ないと思われます。
  
 
   - D列はセルの書式設定で「日付」を選択して、カレンダーの種類で「グレゴリオ暦」を選択して、「*2012/3/14」を選択します。 
  ショートカットキーは [Ctrl]+[1] です。
  
   - E列はセルの書式設定で「日付」を選択して、カレンダーの種類で「和暦」を選択して、「平成24年3月14日」を選択します。 
  
 
同じセルで文字列の日付をシリアル値に変更する
- Excel2007以降では [データ]タブの[区切り位置]を実行します。
  
↓
  区切り位置指定ウィザードの3/3の「列のデータ形式」を「日付」にして、「OK」とすることで可能です。
  
 
日付の表示を和暦に変換する   topへ
 デイト ストリング
=DATESTRING(日付のシリアル値)
(注)他の表計算アプリケーションとの互換を保つために用意された関数のため、ヘルプおよび関数ウィザードには表示されません。
  日本語版 Excel でのみ追加されたものです。
  - A1セルに「2005/4/1」と入力されているとします。
  
 - =DATESTRING(A1) とすると、「平成17年04月01日」となります。
  また 「2005/4/1」のシリアル値「38443」を使って =DATESTRING(38443) としても同じ結果が得られます。
  
   - この関数で返される値は文字列です。
  =TEXT(A1,"ggge年mm月dd日") と同じ結果が得られます。 
  
 - 使用例
  
- A列はExcelが日付と認識できる形式で入力しました。
    Excelが内部では日付としてシリアル値に変換して、表示形式で入力した形式で表示されています。
    DATESTRING関数では和暦に変換できます。  - D列には頭にアポストロフィを入力して文字列とたものです。
    DATESTRING関数ではExcelが日付と認識できるケースでは和暦に変換できます。
    しかし、日付と認識できない文字列ではエラーが返されます。下図では文字列の「元年」は無理なようです。
    
 
 
月末の日付を求めます   topへ
 エンドオブマンス
=EOMONTH(開始日,月数)
      開始日から指定した月数分だけ前後した月末の日付を求めます。
      求めた日付はシリアル値ですので、表示形式を日付に変更します。
 (注) Excel2003以前のバージョンでは、エラー値 #NAME? が返される場合は、分析ツール アドインを組み込む必要があります。
【問題】2003年2月10日に請求書を発行します。
支払期限は翌月末です。C2セルに支払期限日を表示しなさい。
  - C2セルには日付をシリアル値で入力します。日付の形式で入力すると自動でシリアル値に変換されます。
  
    
      
        |   | 
        B | 
        C | 
      
      
        | 2 | 
        請求日 | 
        2025/3/10 | 
      
      
        | 3 | 
        支払期限 | 
        2025/4/30 | 
      
    
  
 
【解答例】C3セルがシリアル値で表示されたら、[ホーム]タブの数値グループの[セルの書式設定]で表示形式を日付に変更します。
セルの書式設定ダイアログを開く、ショートカットキーは[Ctrl]+[1]です。
  - 
  
    
      
        |   | 
        B | 
        C | 
      
      
        | 2 | 
        請求日 | 
        2024/2/10 | 
      
      
        | 3 | 
        支払期限 | 
        =EOMONTH(C2,1) | 
      
    
  
   - 以下のように、”2ヵ月後の1日の前日”でも計算できます。
  
    - =DATE(YEAR(C2),MONTH(C2)+2,1)-1
    
    
 - =DATE(YEAR(C2),MONTH(C2)+2,0)
  
  
 
 
土日、祝日を除いた月末を求めるには
  - =WORKDAY(EOMONTH(A1,0)+1,-1,祝日)
祝日の表をD3:D4に作成しているので 
=WORKDAY(EOMONTH(A1,0)+1,-1,D2:D3)
のように、翌月の1日を基準に前の稼働日を求めればよい。
  
 - 
    
      
         | 
        B | 
C | 
D | 
      
      
        | 2 | 
        2024/4/1 | 
        =WORKDAY(EOMONTH(B2,0)+1,-1,D3:D4) | 
        祝日 | 
      
      
        | 3 | 
         | 
        =WORKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),-1,D3:D4) | 
        2024/4/29 | 
      
      
        | 4 | 
         | 
         | 
        2024/5/3 | 
      
    
  
 
指定した月数分だけ前後した日付   topへ
 イーデイト
=EDATE(開始日,月数)
   開始日から起算して、指定された月数だけ前または後の日付に対応するシリアル値を返します。
 (注) Excel2003以前のバージョンでは、エラー値 #NAME? が返される場合は、分析ツール アドインを組み込む必要があります。
【問題】2003年2月10日に請求書を発行します。 
支払期限の3ヶ月後の日付を表示しなさい。
  - 
    
      
        |   | 
B | 
C | 
      
        | 2 | 
        請求日 | 
        2025/2/10 | 
      
      
        | 3 | 
        支払期限 | 
        2025/5/10 | 
      
    
  
 
【解答例】
  - C3セルがシリアル値で表示されたら、表示形式を日付に変更します。
ショートカットキーは [Ctrl]+[1] です。
  
  
 
【Memo】月末からの計算は下表のように、該当日が無い場合は月末の日付となります。
  - 
  
  
        | 起算日 | 
        3か月後 | 
      
  
        | 2024/8/30 | 
        2024/11/30 | 
      
  
        | 2024/8/31 | 
        2024/11/30 | 
      
  
        | 2024/9/1 | 
        2024/12/1 | 
      
  
        | 2024/11/28 | 
        2025/2/28 | 
      
  
        | 2024/11/29 | 
        2025/2/28 | 
      
  
        | 2024/11/30 | 
        2025/2/28 | 
      
  
        | 2024/12/1 | 
        2025/3/1 | 
      
 
終了日と開始日の差を求めます。   topへ
 デイズ
=DAYS(終了日,開始日)
(注)Excel2013で追加された関数です。
  - 終了日と開始日の差を求めます。これらはいずれもシリアル値もしくは日付と認識される文字列である必要があります。 
 - 日付と認識できない文字列の場合はエラー値「#VALUE!」が返されます。
  
 - なお、DAYS関数を使わず、=B2-C2 といった減算でも計算できます。
  
 - 

 
  - 開始日と終了日との差を求めます。ただし、1年を360日(30日×12ヶ月)として計算します。 
 - 方式で FALSE または 省略した場合は米国(NASD)方式で計算されます。
開始日が、ある月の最終日になる場合、同じ月の 30 日として計算が行われます。
終了日がある月の最終日になる場合に、開始日が同じ月の 30 日よりも前になる状況では、終了日は翌月の 1 日として計算が行われます。
それ以外の場合、終了日は、同じ月の 30 日として計算が行われます。
 - 方式で TRUE を指定した場合は ヨーロッパ方式で計算されます。
開始日または終了日が、ある月の 31 日になる場合、同じ月の 30 日として計算が行われます。
 - 

 
- 基準は下記から選択することができます。
| 基準 | 
基準日数(月/年) | 
| 0 または省略 | 
30日/360日 NASD方式 | 
| 1 | 
実際の日数/実際の日数 | 
| 2 | 
実際の日数/360日 | 
| 3 | 
実際の日数/365日 | 
| 4 | 
30日/360日 ヨーロッパ方式 | 
 - 

 
シリアル値と日付システム
- Windows版のExcelでは 日付は1900年1月1日を「1」、1900年1月2日を「2」・・・と、数値で表します。
時間・時刻は「1日(24時間)」を「1」として、12:00は「0.5」、6:00は「0.25」と小数点以下の数値で表します。
    
この数値のことをシリアル値と呼びます。
日付が入力されているセルの表示形式を「標準」とすると、日付データが数値で表示されます。この数値がシリアル値と呼ばれるものです。
   - なお、Windows版は1900日付システム、Macintosh版は1904日付システムとシリアル値の基準が異なっていました。
Excel 2016 for Mac および Excel for Mac 2011 では、1900日付システムが使用されました。
このバージョン以降では、Windows 版 Excel との日付の互換性が保証されています。
      - Macintosh版では「1904年1月2日」が「1」となっています。 「1904年1月1日」が「0」から始まっています。1904日付システムと呼ばれます。
Excel版では「1900年1月1日」が「1」となっています。1900日付システムと呼ばれています。
よって、Windows版とMacintosh版でExcelファイルをやり取りすると、日付がずれる場合があります。 
 
- Excel2007以降ではExcelのオプションで設定します。[ファイル]タブをクリックして、[オプション]を選択します。
    アクセスキーは[Alt],[T],[O(オウ)] と順番に押します。
[詳細設定]を選択して、「次のブックで計算するとき」で「1904年から計算する」にチェックを入れます。
    
 - Excel2003以前では【ツール】→【オプション】で【計算方法】タブの『1904年から計算する』にチェックを入れて、シリアル値の起点を変更します。
    
 - ただし、使う前に Microsoft サポート技術情報 ↓を参照願います。
Excel の日付システム
  
 
 
スポンサードリンク
よねさんのWordとExcelの小部屋 » 
エクセル関数一覧表 » 
日付の関数
PageViewCounter

Since2006/2/27