\エクセルの日付=シリアル値/
概要
まず、実務で日付を扱うことはとっても多いです。
そのため“エクセルで日付を扱うこと”が何を意味するのかを理解します。
下記はNGケース(例2001年4月1日)。
2つ並べましたがどちらも日付ではありません。
日付ではないなら何なのか?
上は「20010401」という文字列
下は「2001」と「4」と「1」という数値です。
シリアル値
まずシリアル値は、数値に関する仕組みのことです。
コピーのような機能の話ではありません。
日付を扱うための数値に関する仕組みと理解してください。
その仕組みとは、
"1" を「1900年1月1日(日)」とする。 1足すごとに”プラス1日” 。
"2"は「1900年1月2日(月)」
"3"は「1900年1月3日(火)」
"2001"は「1905年6月23日(金)」
"36982"は「2001年4月1日(日)」といったものです。
「なんで"1"が1900年1月1日がなの?」とかは考えないでください。単に仕様です。
曜日も同じようにセットでついてきます。
「万年カレンダーみたいにエクセルは日付を管理している」とわかれば十分です。
シリアル値(日付と時刻)
この表のシリアル値はすべて整数なのがわかります。
シリアル値の整数部分は、“日付”を表します。
時刻を表にしました。
シリアル値の仕組みは小数部分も例外ではないです。
シリアル値の少数部分は、“時刻”を表します。
正確には0時0分0秒を"0"として、
あとは1秒増えるたびシリアル値は86,400分の1増えます。
86,400という数字は、1日=86,400秒(24時間×60分×60秒=86,400秒)から。
例えば、2023年4月1日23時59分59秒のシリアル値は"45017.9999884259"です。
シリアル値(表示形式)
上記のように日付はシリアル値です。
2001年4月1日(日)は36982です。
ここで大事なのは、
日付を扱うとき、表示形式もセットで使うことがマストということです。
y
西暦年を表す
m
月を表す
d
日を表す
a
曜日を漢字で表す
g
和暦を表す
よく聞かれるシリアル値と表示形式
「1/3と入力すると1月3日となる」
「1-3と入力すると1月3日となる」
日付のつもりで入力していないのに、日付と扱われます。
エクセルが“勝手に”日付と解釈し、さらに“勝手に表示形式を設定"しています。
これも「なんでエクセルが勝手に決めるの?」と考えることではありません。仕様です。
解説
1.「4月1日」と入力…エクセルが日付と解釈、さらに表示形式「○月○日」が設定される
4月1日 表示形式が、デフォルトの「標準」から「○月○日」に変更
2.「4月1日」を削除…値を削除しただけなので表示形式「○月○日」の設定は残ったまま
表示形式「○月○日」のまま
3.「2023/4/1」と入力…設定済みの表示形式「○月○日」により表示が「4月1日」となる
4月1日 表示形式「○月○日」のまま
表示形式で困らない
入力したものが日付と解釈されたとき、エクセルが表示形式を“勝手に”設定することがあります。
ただこれは、表示形式を知っていればほとんど困りません。
大事なのは、セルの「表示形式」は自分で把握する・操作するという認識をもつことです。
1900年2月29日(余談)
この日は「日付」として認識されますが、実際には存在しません。
この日付を含んだ計算をするときだけ注意が必要です。つまりどうでもいいです。
シリアル値、表示形式、VBA
VBAで日付を扱うことも当然多くあります。
そのとき、この、シリアル値と表示形式の知識に加えて、
VBAの各機能の仕様も知っておかなければなりません。兎に角気を遣うことが多いです。
そのときも基本となる知識は、
シリアル値と表示形式ですので、忘れないでいてください。
このブログに関して↓