日付関数のシリアル値を理解して
年/月/日のデータの扱いに強くなる!



 シリアル値とは、日付と時刻を連続した数値で表したものをいい、エクセルでは日付と時刻をこのシリアル値に置き換え計算します。シリアル値は整数部と小数部に分かれており、整数部は日付を表し、小数部は時刻を表します。整数部は、1900年1月1日〜9999年12月31日の日付を1〜2958465の整数としています。前回は時刻関数についてご紹介しましたが、今回は同じくシリアル値をあつかう関数である日付関数について見ていきましょう。日付関数は全部で15種類あります。そのうち6種類はアドイン関数なので、関数に組み込まなければなりません(ツールメニューのアドインで、分析ツールにチェック)。また、DATEDIFは、関数の貼り付けダイアログには表示されないので、手入力指定します。
 このような日付関数は大きく分けると、現在の日付を求める関数(TODAY、NOW)、日付のシリアル値を返す関数(DATE、DATEVALUE)、年/月/日の日付データから目的の日付データを求める関数(DAY、MONTH、YEAR、WEEKDAY)、2つの日付データ間の期間差を求める関数(DATEDIF、YEARFRAC、NETWORKDAYS、DAYS360)、指定した日数後(前)の日付を求める関数(EDATE、EOMONTH、WORKDAY)に分類されます。
 今回は、指定した日数後(前)の日付を求める関数と、年/月/日のデータから目的の日付データを求める関数、別々のセルに表示させた日付データを1つにまとめる関数について見ていきましょう。



今月の関数



現在の日付を求める
TODAY関数
書式 =TODAY()
TODAY関数で現在の日付が表示できる。目的セルに「=TODAY()」と入力。括弧だけで、引数は入れない。「=NOW()」で日付と時刻が表示できる。日付を確定する場合は [F9] キーを押す。


シリアル値から「年」を求める
YEAR関数
書式 =YEAR(シリアル値)
日付のシリアル値から「年」にあたる値だけを抜き出すのがYEAR。同様に、MONTHは「月」、DAYは「日」だけを取り出す関数。また、時刻のシリアル値の場合ならば、HOURは「時」、MINUTEは「分」、SECONDは「秒」の値をそれぞれ取り出すことができる。


指定した月数後の日付を求める
EOMONTH関数
書式 =EOMONTH(開始日, 月)
目的のセルの日付から何ヵ月か経過「後」の日付(月の末日)を表示できる。引数の「月」を「マイナス」にすれば、何ヵ月「前」の日付が表示。「=EDATE(開始日, 月)ならば何ヵ月経過後の日付を表示。



1 現在の日付と時刻を素早く表示

ワークシートを開いたときに、つねに現在の日付を表示させるにはTODAY関数を、日付と時刻表示させるにはNOW関数を利用。時間はパソコンの内蔵時計によって表示されるので、時間を変更したい場合は、[日付と時刻のプロパティ] で調整。しかしこれらの関数は引数を持たないので、「関数の貼り付け」ダイアログを表示させずに、答えを表示させたいセル(H4)を選び、(1)数式バーに直接入力した方がすばやくセルに時刻や日付を表示できる。






2 指定した月数後のデータを求める

月数を指定して、指定後(前)の日付(月の末日)を求めるにはEOMONTH関数を利用する。(2)答えを求めたいセルを選び、(3)[関数の貼り付け] をクリック、「関数の貼り付け」の [日付/時刻] 関数から(4)[EOMONTH] 関数を選択し [OK] ボタンをクリック。ここで月の末日ではなく、何ヵ月経過後の日付を求めるには [EDATE] を使う。なおD6のセルは月数として「17」という数字を入れ、表示形式のユーザー定義で [G/標準"ヵ""月"] と設定している。ここで、土、日、祝日を除いた指定後の日付データを求めるには [WORKDAY] を利用する(WORKDAY関数については次回解説)。






[開始日] にはC6を指定し、[月] にはD6を指定。[OK] ボタンで答えを求められる。ここでは、「完成予定月」と、「月」の表示まででいいので、E6のセルで右クリック [セルの書式設定]→[表示形式] の [ユーザー定義] で、(5)種類に [yyyy/mm] と設定しておいた。設定した関数と書式は、E10のセルまでドラッグ(オートフィル)することでコピーする。




E6のセルに入った式は
=EOMONTH(C6,D6)


3 年/月/日の1つのデータから目的の日付データを求める

A: YEAR、MONTH、DAY、WEEKDAY関数を利用して求める

日付データから「年」のみを求めるには [YEAR] 関数を利用。年を求めたいセルF6をクリックし、「関数の貼り付け」から [YEAR] を選択し [OK] ボタン。シリアル値にはC6を指定。同様に「月」のみを求める場合は [MONTH]、「日」のみは [DAY] を選択。





B: セルを参照し、表示形式を変更して求める

(6)F6をクリックして、(7)数式バーのイコールボタンをクリックし、C6をクリックしてセルの参照式を設定する。F6セルの[表示形式] の「ユーザー定義」で [yyyy"年"] と入力。




曜日は、WEEKDAYを利用。WEEKDAYは答えを数値で返すため(日〜土を1〜7の数値で指定)、CHOOSEで数値を曜日に置き換える。曜日を求めたいセルI6を選び、[CHOOSE] を選択。「インデックス」で [WEEKDAY] を選び、「シリアル値」にはC6と入力(「種類」は、1か省略すると日曜日を1とする。今回は省略)。値に1〜7に置き換える「値」を入力。ここで、関数を利用せずにセルを参照し、表示形式を変更するだけでも求めることができる。種類に [aaa] と入力すると [月] と表示され、[aaaa] と入力すると [月曜日] と表示される。





I6のセルに入った式は
=CHOOSE(WEEKDAY(C6),
"(日)","(月)","(火)","(水)","(木),"(金)","(土)")




4 別々のセルに表示された日付データを1つのセルに表示させる

別々のセルに表示された日付データを1つのセルに表示させるには、DATE関数を利用する。たとえば(8)C6のセルを選択、[DATE] 関数を選択し、「年」にはF6、「月」にはG6、「日」にはH6を設定。[OK] ボタンで、日付データとして1つのセルにまとめられる。