前回に続いて セルの表示形式についてご紹介します。
Excelで新規ブックを開いて、A1セルに「1234」と入力、改めて A1セルを選択した状態で、[ホーム]タブ-[数値]グループにある「標準」と書かれた窓の「∨」をクリックします。
(5) 「短い日付形式」
A1セルは「1903/5/18」と表記され、数式バーの表示も同じ「1903/5/18」となりました。
表示形式を変更しても、入力した数値「1234」は記憶されたまま変更されないはずでは?
A1セルの表示形式を「標準」に戻すと、セルの表記も数式バーの表記も「1234」に戻ります。
やはり、記憶された数値は変更されていないようです。
このときカギとなるのが「シリアル値」という連番(serial number)です。
ご承知のように、1つのセルには 1つの値しか格納できません。
ところが、年月日という日付を表わすのに「年」「月」「日」という 3つの値を個々に入れると 3つのセルが必要になります。
でも、それでは常にこの 3つのセルが一緒に操作されないと不都合が起きます。
そこで考えついたのが「シリアル値」です。
つまり、「1900年 1月 1日」を数値の「1」に対応させ、「1900年 1月 2日」を「2」、「1900年 1月 3日」を「3」‥‥という具合に“連番”で表わすわけです。
こうすれば、「年」「月」「日」という 3つの値を持ちながら、1つのセルに数値として格納できます。
上記の「1903/5/18」というのは、「1900/1/1」を「1」としてそれから「1234」日めの日付ということになります。
ちなみに、Excelで「年月日」や「年月」、「月日」を入力するときは
- 2021/1/9
- 2021-1-9
- 2021年1月9日
- 21-1-9 ⇒ 2021/1/9
- 2021/1 ⇒ Jan-21 (数式バー:2021/1/1)
- 2021年1月 (数式バー:2021/1/1)
- 1/9 ⇒ 1月9日 (数式バー:2021/1/9)
- 1月9日 (数式バー:2021/1/9)
- 1-9 ⇒ 1月9日 (数式バー:2021/1/9)
など種々の入力方法がサポートされています。
(6) 「長い日付形式」
先の A1セルを「長い日付形式」で表記すると「1903年5月18日」と表示されます。
この A1セルについて [Ctrl]+[1]キーを押して「セルの書式設定」を開くと、下図のようになります。
分類が「日付」で、右側の種類が「*2012年3月14日」になっており、先の「短い日付形式」のときは「*2012/3/14」になっています。
この「短い日付形式」のときに「ユーザー定義」を見てみると「yyyy/m/d」となっています。
「yyyy」は 4桁で表現する「年」です。
「m」は 1桁で表わされる「月」は 1桁で、2桁の場合は 2桁で表記され、「d」は同じく「日」を表しています。
もし、これを「yyyy/mm/dd」とすれば「1903/05/18」というように 1桁の月日でも「0」が補われます。
「長い日付形式」のときに「ユーザー定義」を見てみると「[$-x-sysdate]dddd, mmmm dd, yyyy」とかなり難解な形式が現れました。
この書式は、「[$-x-sysdate]」部分で Windows PCに設定されたロケール(国や地域)を認識し、以降の項目をその地域で通常使用される形式で表示するものです。
ここでは、結果が同じになる「yyyy"年"m"月"d"日"」という形式で理解しておけばよいと思います。
ちなみに、上図の中で「カレンダーの種類」が「グレゴリオ暦」となっているところを「和暦」と選び直すと「令和~年」という和暦表示ができるようになります。
(7) 「時刻」形式
「1234」と入力された A1セルを選択し、今度は「時刻」形式で表示してみると、A1セルは「0:00:00」、数式バーには「1903/5/18 0:00:00」と表示されます。
これについても「セルの書式設定」を開き、「ユーザー定義」を見てみると「[$-x-systime]h:mm:ss AM/PM」となっています。
先ほどの「[$-x-sysdate]」に似ていますが、「[$-x-systime]」も設定されたロケールで通常使用される時刻形式で表示するものです。
「h:mm:ss」が「時」「分」「秒」を表します。
数式バーに表記されるように、Excelでは 1つのセルの中に「年」「月」「日」「時」「分」「秒」の 6つの値をまとめて格納できるようになっています。
これも先にご紹介したように「シリアル値」に含まれます。
「年」「月」「日」については「1900/1/1」を「1」とした連番だとお話ししましたが、「時」「分」「秒」部分は小数点以下を使って格納します。
1日は 24時間ですから、「0.5」は「12時間」、「0.25」は「6時間」に相当します。
このように「時」「分」「秒」を「日」単位に換算して小数点以下の数値として格納します。
A1セルは元々「1234」という数値を入力したものですから小数点以下は「0」でした。
そのため、「時刻」形式で表示すると「0:00:00」となるわけです。
「日付」関連の表示形式については、Microsoftのサポートぺージをご参照ください。
最後に今回のおまけ。
「シリアル値」は「1900/1/1」を「1」とした連番であると説明しましたが、それ以前の日付を扱う必要が出てきたらどうしましょう。
セルに「1868/10/23」と入力しても「日付」として認識してくれず、無理やり「日付」形式として設定しても日付関連の関数でもエラーとなります。
また、負値を入力し「日付」形式に設定してもエラーとなります。
実は、日付に関連する曜日なども含めて暦は 400年周期で一回りするので、上記の例なら「2268/10/23」というように「1900/1/1」以降の日付としてから扱うようにすればよろしいです。
もちろん、「400年」を足したことをどこかで辻褄合わせが必要になりますが‥‥。