このページではJavaScriptを使用しています。スクリプトが無効に設定されているとメニュー等が表示されません。
年・月・日を指定し、その日付を取り出す
上のサンプルの「逆」のようなものですが、合体文字列の生成ではなくて
「日付」
のデータ型を生成します。
まず、データ上の「日付」がどういうものか理解して下さい。
セル上の「日付」は書式に左右されて、和暦表示だったり、西暦表示だったり、月日だけだったりしますが、「日付」として認識されているなら数式バーには日本語版
Excel
なら「
2000/1/1
」という形式で表示されるはずです。 しかし、「日付」というデータ型の実体はこのような視覚的に「年」「月」「日」が認識できるようなものではなく、「シリアル値」というものなのです。
まず「日付」というデータ型を理解して下さい。
まず、新規ブックを開いて、
A1
セルに和暦で日付を入力してみます。 セル上では、おそらく入力したままで「
平成28年7月18日
」などと表示されていると思います。
次に、その
A1
セルをもう一度選択してみます。
「数式バー」を見ると、入力した和暦の日付ではなく、西暦の日付が表示されているはずです。 これは、セル上の値が「日付」として認識されていて、書式で和暦として表示されていることを表わしています。
では、その「日付」とはどのようなデータなのでしょう。
A1
セルを選択した状態で「セルの書式設定」を選択してみます。 バージョンに寄りますが、
Excel2013
だと、このようになっていました。
これだけでは実体が分からないので、これを「数値」にしてみましょう。
ここで、既に「サンプル」の表示が5桁の数値に変わったので分かると思いますが、内部の値は「年」「月」「日」を表意するような文字情報ではなく、単なる数値なのです。
このような表を見れば理解ができると思います。
A
列に連続した日付を入力しておいて、
B
列にはその
A
列を単純に参照する計算式を入れておきます。 そして
B
列の書式を「数値」にしておくと、このようになりました。
内部で扱われている「日付」は、
1900年1月1日
を起算とする「通算日」のような値なのです。1日を「1」の増分とする値ですが、これで時刻も表記するので「整数」ではなく「実数」です。 1日を「1」の増分とするわけですから、1時間は「24分の1」の増分、1分は「
1440
分の1」の増分となります。
この前後のページで紹介する関数を使う上では、これらのことを理解していなくても済む場合がほとんどですが、「翌日の日付は1を加えれば良い」とか「月末日は翌月1日から1を引けば良い」などの応用ができるかなどで大きく違いが出ることがあります。
「年」「月」「日」をそれぞれ数値で指定して、これを日付として生成するのが
DATE
関数です。
(画像をクリックすると、このサンプルがダウンロードできます)
DATE
関数
は、カッコ内に「年」「月」「日」を指定することで、該当する日付を生成します。
※7行目は年月日を
YYYYMMDD
形式の文字列として生成しています。
DATE
関数
の特質すべき点は、以下の例を見て下さい。
(画像をクリックすると、実際にExcelが開きます)
Excel
を呼び出すと、上のものと全く同じですが、月日の指定が違います。「
2016年13月1日
」を要求しているわけで、「
2017年1月1日
」が返ってきます。これは例えば翌月の日付を求めるような処理を行なう場合に「12月だったら年に1を加えて1月に戻す・・・」などを計算式の上で意識する必要がないことを意味しています。単に月に1を加えれば良いわけです。
※
R1C1
参照形式の場合は
=DATE(R2C2,R3C2,R4C2)
となります。