テクニカルライター きたみあきこ のホームページ
Office Kitami

Office Kitami内の講座ページは閉鎖予定です。
今後は、きたみあきこのOfficeブログ Officeのチカラ をご利用ください。

公開日:2009/11/08 | 最終更新日:2010/10/06
日付/時刻関数

現在の日時を求める関数
TODAY, NOW

数値や文字列から日時を作成する関数
DATE, DATEVALUE, TIME, TIMEVALUE

日時から特定の要素を取り出す関数
YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, WEEKDAY, WEEKNUM

日付を計算する関数
DATEDIF, EDATE, EOMONTH, WORKDAY, WORKDAY.INTL, NETWORKDAYS, NETWORKDAYS.INTL, DAYS360, YEARFRAC

日付/時刻関数に関する基礎知識
シリアル値、表示形式、アドイン関数、揮発性関数など

 
Excel 2010の新関数NETWORKDAYS.INTL, WORKDAY.INTL
関数 構文 / 使用例
トゥデイ
TODAY
現在の日付を求める
=TODAY()
現在の日付を求める
=TODAY() → 現在の日付データ (例 「2009/11/8」)
ナウ
NOW
現在の日時を求める
=NOW()
現在の日時を求める
=NOW() → 現在の日時データ (例 「2009/11/8 15:07:42」)
関数 構文 / 使用例
デイト
DATE
日付を作成する
DATE
=DATE(, , )
の数値から日付データを作成する。に「13」を指定した場合は翌年1月の日付になるなど、そのままで日付にならない場合は自動的に繰り上げや繰り下げが行われる。作成できる日付の範囲は「1900/1/1」から「9999/12/31」まで
=DATE(2009,11,8)  →  2009/11/ 8
=DATE(2009,13,8)  →  2010/ 1/ 8 (「13」月を翌年1月と見なす)
=DATE(2009,11,0)  →  2009/10/31 (「0」日を前月末日と見なす)
=DATE(2009,11,-1)  →  2009/10/30 (「-1」日を前月末日の1日前と見なす)
デイトバリュー
DATEVALUE
日付を作成する
DATE VALUE
=DATEVALUE(日付文字列)
日付文字列から日付データを作成する
=DATEVALUE("2009年11月8日") → 40125 (「2009/11/8」のシリアル値)
タイム
TIME
時刻を作成する
TIME
=TIME(, , )
の数値から時刻データを作成する。に「60」を超える数値や負の数値を指定した場合など、そのままで時刻にならない場合は自動的に繰り上げや繰り下げが行われる
=TIME(15,7,42)  →  3:07 PM (15:07:42)
=TIME(15,7,61)  →  3:08 PM (15:08:01)
=TIME(15,-1,42)  →  2:59 PM (14:59:42)
タイムバリュー
TIMEVALUE
時刻を作成する
TIME VALUE
=DATEVALUE(時刻文字列)
時刻文字列から時刻データを作成する
=TIMEVALUE("3:07:42 PM") → 0.630347222 (「15:07:42」のシリアル値)
関数 構文 / 使用例
イヤー
YEAR
「年」を取り出す
YEAR
=YEAR(シリアル値)
日時(シリアル値)から「年」の数値を取り出す
=YEAR("2009/11/8 15:07:42") → 2009
マンス
MONTH
「月」を取り出す
MONTH
=MONTH(シリアル値)
日時(シリアル値)から「月」の数値を取り出す
=MONTH("2009/11/8 15:07:42") → 11
デイ
DAY
「日」を取り出す
DAY
=DAY(シリアル値)
日時(シリアル値)から「日」の数値を取り出す
=DAY("2009/11/8 15:07:42") → 8
アワー
HOUR
「時」を取り出す
HOUR
=HOUR(シリアル値)
日時(シリアル値)から「時」の数値を取り出す
=HOUR("2009/11/8 15:07:42") → 15
ミニット
MINUTE
「分」を取り出す
MINUTE
=MINUTE(シリアル値)
日時(シリアル値)から「分」の数値を取り出す
=MINUTE("2009/11/8 15:07:42") → 7
セカンド
SECOND
「秒」を取り出す
SECOND
=SECOND(シリアル値)
日時(シリアル値)から「秒」の数値を取り出す
=SECOND("2009/11/8 15:07:42") → 42
ウィークデイ
WEEKDAY
「曜日」を取り出す
WEEKDAY
=DAY(シリアル値, 種類)
日時(シリアル値)から「曜日」を表す数値を返す。戻り値の数値は、引数種類で指定する。バージョンによって指定できる値が異なるので注意
■引数 種類 の設定値
設定値戻り値バージョン
1 または 省略1 (日曜日) 〜 7 (土曜日)全バージョン
21 (月曜日) 〜 7 (日曜日)全バージョン
30 (月曜日) 〜 6 (日曜日)全バージョン
111 (月曜日) 〜 7 (日曜日)2010
121 (火曜日) 〜 7 (月曜日)2010
131 (水曜日) 〜 7 (火曜日)2010
141 (木曜日) 〜 7 (水曜日)2010
151 (金曜日) 〜 7 (木曜日)2010
161 (土曜日) 〜 7 (金曜日)2010
171 (日曜日) 〜 7 (土曜日)2010
=WEEKDAY("2009/11/8 15:07:42")  →  1 (日曜日)
=WEEKDAY("2009/11/8 15:07:42",2)  →  7 (日曜日)
ウィークナンバー
WEEKNUM
「週」を取り出す
=WEEKNUM(シリアル値, 週の基準)
日時(シリアル値)から「週」を表す数値を返す。引数週の基準で、週の始まりの曜日と年の第1週を指定する。バージョンによって指定できる値が異なるので注意
■引数 週の基準 の設定値
設定値週の始まり年の第1週バージョン
1 または 省略日曜日1月1日を含む週全バージョン
2月曜日1月1日を含む週全バージョン
11月曜日1月1日を含む週2010
12火曜日1月1日を含む週2010
13水曜日1月1日を含む週2010
14木曜日1月1日を含む週2010
15金曜日1月1日を含む週2010
16土曜日1月1日を含む週2010
17日曜日1月1日を含む週2010
21月曜日最初の木曜日を含む週2010
=WEEKNUM("2009/11/8 15:07:42")  →  46 (1月1日の週から数えて46週目)
=WEEKNUM("2009/11/8 15:07:42",2)  →  45 (1月1日の週から数えて45週目)

赤字の引数は必須、青字の引数は省略可能です。

関数 構文 / 使用例
デイトディフ
DATEDIF
期間内の年数や日数を求める
DATE DIFference
隠し関数
=DATEDIF(開始日, 終了日, 単位)
開始日から終了日までの長さを、指定した単位で求める。リボンやヘルプ、[関数の挿入]ダイアログに表示されない隠し関数
■引数 単位 の設定値
設定値説明
"Y"期間内の満年数を求める
"M"期間内の満月数を求める
"D"期間内の満日数を求める
"YM"1年未満の月数を求める
"YD"1年未満の日数を求める
"MD"1ヶ月未満の日数を求める
※引数単位に「"YD"」または「"MD"」を指定したときに、まれに正確な結果が得られないことがあるので注意
=DATEDIF("2000/10/8","2009/12/18","Y")  →   9 (年)
=DATEDIF("2009/10/8","2009/12/18","M")  →   2 (ヶ月)
=DATEDIF("2009/11/8","2009/11/18","D")  →  10 (日)
=DATEDIF("2000/10/8","2009/12/18","YM")  →   2 (ヶ月)
=DATEDIF("2000/10/8","2009/12/18","YD")  →  71 (日)
=DATEDIF("2000/10/8","2009/12/18","MD")  →  10 (日)
イーデイト
EDATE
○ヶ月前/後の日付を求める
=EDATE(開始日, )
開始日から起算して、数前/後の日付を求める
=EDATE("2009/11/8",2)  →  40186 (2ヶ月後「2010/1/8」のシリアル値)
=EDATE("2009/11/8",-2)  →  40064 (2ヶ月前「2009/9/8」のシリアル値)
エンドオブマンス
EOMONTH
○ヶ月前/後の月末日を求める
=EOMONTH(開始日, )
開始日から数えて、数前/後の日付を求める
=EOMONTH("2009/11/8",1)  →  40178 (翌月末「2009/12/31」のシリアル値)
=EOMONTH("2009/11/8",0)  →  40147 (当月末「2009/11/30」のシリアル値)
=EOMONTH("2009/11/8",-1)  →  40117 (前月末「2009/10/31」のシリアル値)
ワークデイ
WORKDAY
○営業日前/後を求める
=WORKDAY(開始日, 日数, 祭日)
開始日から数えて、土日と祭日を除いた日数前/後の日付を求める。祭日には、日付が入力されているセル範囲を指定できる。祭日の指定を省略すると、土日だけが除外される
func101
=WORKDAY(B1,1)  →  40116 (1日後「2009/10/30(木)」のシリアル値)
=WORKDAY(B1,2)  →  40119 (2日後「2009/11/ 2(月)」のシリアル値)
=WORKDAY(B1,3)  →  40120 (3日後「2009/11/ 3(火)」のシリアル値)
=WORKDAY(B1,3,B3:B4)  →  40121 (3日後「2009/11/ 4(水)」のシリアル値)
=WORKDAY(B1,-3)  →  40112 (3日前「2009/10/26(月)」のシリアル値)
ワークデイ・インターナショナル
WORKDAY.INTL
○営業日前/後を求める
WORKDAY.INTernationaL
Excel 2010以降
=WORKDAY.INTL(開始日, 日数, 週末, 祭日)
開始日から数えて、週末祭日を除いた日数前/後の日付を求める。週末は、下表の値または文字列で指定する。祭日には、日付が入力されているセル範囲を指定できる。祭日の指定を省略すると、週末だけが除外される
■引数 週末 の設定値1
設定値説明設定値説明
1 または 省略土曜日、日曜日11日曜日のみ
2日曜日、月曜日12月曜日のみ
3月曜日、火曜日13火曜日のみ
4火曜日、水曜日14水曜日のみ
5水曜日、木曜日15木曜日のみ
6木曜日、金曜日16金曜日のみ
7金曜日、土曜日17土曜日のみ
■引数 週末 の設定値2
上表以外の曜日を指定したいときは、営業日を「0」、非営業日を「1」として、月曜日から土曜日までを7文字の文字列で指定する。たとえば、「0010011」とした場合、水、土、日が非営業日となる
func101
=WORKDAY.INTL(B1,4)  →  40121 (「11/4(水)」 土、日を除く)
=WORKDAY.INTL(B1,4,11)  →  40120 (「11/3(火)」 日を除く)
=WORKDAY.INTL(B1,4,"0010011")  →  40122 (「11/5(木)」 水、土、日を除く)
=WORKDAY.INTL(B1,4,11,B3:B4)  →  40121 (「11/4(水)」 日、祭日を除く)
ネットワークデイズ
NETWORKDAYS
営業日数を求める
=NETWORKDAYS(開始日, 終了日, 祭日)
開始日から終了日までの、土日と祭日を除いた日数を求める。祭日には、日付が入力されているセル範囲を指定できる。祭日の指定を省略すると、土日だけが除外される
func102
=NETWORKDAYS(B1,B2)  →  6 (10/31(土)と11/1(日)を除外)
=NETWORKDAYS(B1,B2,B4:B5)  →  5 (10/31(土)と11/1(日)と11/3を除外)
ネットワークデイズ・インターナショナル
NETWORKDAYS.INTL
営業日数を求める
NET WORKDAYS.INTernationaL
Excel 2010以降
=NETWORKDAYS.INTL(開始日, 終了日, 週末, 祭日)
開始日から終了日までの、週末祭日を除いた日数を求める。週末は、下表の値または文字列で指定する。祭日には、日付が入力されているセル範囲を指定できる。祭日の指定を省略すると、週末だけが除外される
■引数 週末 の設定値1
設定値説明設定値説明
1 または 省略土曜日、日曜日11日曜日のみ
2日曜日、月曜日12月曜日のみ
3月曜日、火曜日13火曜日のみ
4火曜日、水曜日14水曜日のみ
5水曜日、木曜日15木曜日のみ
6木曜日、金曜日16金曜日のみ
7金曜日、土曜日17土曜日のみ
■引数 週末 の設定値2
上表以外の曜日を指定したいときは、営業日を「0」、非営業日を「1」として、月曜日から土曜日までを7文字の文字列で指定する。たとえば、「0010011」とした場合、水、土、日が非営業日となる
func102
=NETWORKDAYS.INTL(B1,B2,11)  →  7 (11/1(日)を除外)
=NETWORKDAYS.INTL(B1,B2,11,B4:B5)  →  6 (11/1(日)と11/3を除外)
デイズ360
DAYS360
1年を360日として期間内の日数を計算
DAYS 360
=DAYS360(開始日, 終了日, 方式)
1年を360日として、開始日から終了日までの日数を計算する。1年を30日×12ヶ月と仮定した支払い計算などに役に立つ。引数方式で、計算の方式を指定する
■引数 方式 の設定値
設定値説明
FALSE または 省略NASD方式。開始日が月末日の場合、30日として計算。開始日が30日以外、かつ終了日が31日の場合、終了日を翌月1日として計算
TRUEヨーロッパ方式。開始日が31日の場合、30日として計算。終了日が31日の場合、30日として計算
=DAYS360("2009/1/1","2009/1/30")  →  29
=DAYS360("2009/1/1","2009/1/31",TRUE)  →  29
=DAYS360("2009/1/1","2009/1/31",FALSE)  →  30
イヤーフラクション
YEARFRAC
期間内の日数が1年に占める割合を計算
=YEARFRAC(開始日, 終了日, 基準)
開始日から終了日までの期間が、1年間に対して占める割合を計算する。年利計算などに役立つ。引数基準で、計算方法(月/年)を指定する
■引数 基準 の設定値
設定値説明
0 または 省略30日 / 360日 (NASD方式)
1実際の日数 / 実際の日数
2実際の日数 / 360日
3実際の日数 / 365日
430日 / 360日 (ヨーロッパ方式)
=YEARFRAC("2009/1/1","2009/3/31")  →  0.25

赤字の引数は必須、青字の引数は省略可能です。

エクセルでは、日付と時刻を「シリアル値」という数値で管理しています。シリアル値は、「1900/1/1 0:00:00」を「1」とし、1日ごとに1ずつ増えていきます。シリアル値の整数部分は日付を表し、小数部分は時刻を表します。
たとえば、「1900/1/2」のシリアル値は「2」、「18:00」のシリアル値は「0.75」、「1900/1/2 18:00」のシリアル値は「2.75」です。また、「2009/11/8」のシリアル値は「40125」、「2009/11/8 18:00」のシリアル値は「40125.75」となります。
func111

関数の引数に日付や時刻を指定するとき、シリアル値を指定してもかまいません。たとえば、「=MONTH(40125)」としても、「=MONTH("2009/11/8")」としても、結果は同じ「11」になります。

次の関数は、結果がシリアル値で返されます。

DATEVALUE, TIMEVALUE, EDATE, EOMONTH, WORKDAY, WORKDAY.INTL

たとえば、「=EOMONTH("2009/11/8",0)」と入力したセルには、「2009/11/30」(当月末日)のシリアル値「40147」が表示されます。これを日付の形式で表示するには、表示形式(次項参照)を設定します。

■「=EOMONTH("2009/11/8",0)」の結果はシリアル値で表示される
func112

「表示形式」の機能を使うと、実際に格納されている値とは別の表示で、セルに値を表示することができます。表示形式を設定するには、セルを右クリックして[セルの書式設定]を選択し、[セルの書式設定]ダイアログボックスを表示します。その[表示形式]タブで、具体的な表示方法を指定します。

■[セルの書式設定]ダイアログボックスの[表示形式]タブ
func113

たとえば、「=EOMONTH("2009/11/8",0)」と入力したセルに[日付]の表示形式を設定すると、「2009/11/8」や「11月8日」など、色々な形式で日付を表示できます。

反対に、「2009/11/8」と入力されたセルの表示形式を[標準]に変更すると、セルに「2009/11/8」のシリアル値である「40147」が表示されます。

「アドイン」とは、Excelに組み込んで使用する追加機能のことです。Excel 2003までは、「分析ツール」というアドインを組み込まないと次の関数を使用できません。

EDATE, EOMONTH, NETWORKDAYS, NETWORKDAYS.INTL, WEEKNUM, WORKDAY, WORKDAY.INTL, YEARFRAC

「分析ツール」アドインを組み込むには、[ツール]メニューの[アドイン]を選択して[アドイン]ダイアログボックスを表示し、[分析ツール]をオンにして[OK]ボタンをクリックします。

■[アドイン]ダイアログボックス
func114

なお、2007以降のExcelでは、アドインを組み込みまなくても、上記の関数を使用できます。

次の関数は、「揮発性関数」です。

TODAY, NOW

揮発性関数とは、ブックを開いたり、【F9】キーを押すなどして再計算を実行したときに自動的に更新される関数のことです。揮発性関数はブックを開くだけで更新されるので、ブックに変更を加えていなくても、閉じるときに「変更を保存しますか?」という保存確認のメッセージが表示されます。

2009/11/08 : 公開
2009/11/14 : DATEDIF関数を追加
2009/11/24 : DAYS360関数、YEARFRAC関数を追加
2009/12/01 : 揮発性関数、隠し関数、関数の語源を追加
2010/09/23 : Excel 2010の新関数を追加
2010/10/06 : WEEKDAY関数とWEEKNUM関数にExcel 2010用の引数を追加