Excel/Access

サブタイトルは「テーブルを使ってください、お願いします。」本当に大事なことに目を向けよう。

『シリアル値って何ですか?』Aさん

\エクセルの日付=シリアル値/



 

概要

まず、実務で日付を扱うことはとっても多いです。
そのため“エクセルで日付を扱うこと”が何を意味するのかを理解します。
下記は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です。

ここで大事なのは、
日付を扱うとき、表示形式もセットで使うことがマストということです。

eee-1048576.hatenablog.com

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の各機能の仕様も知っておかなければなりません。兎に角気を遣うことが多いです。
そのときも基本となる知識は、
シリアル値と表示形式ですので、忘れないでいてください。



 

このブログに関して↓

eee-1048576.hatenablog.com