「シリアル値とは~~ということで5桁の数字が出てきたら日付に変換しましょうね~」「ふ~ん」
Excelで日付を入力することが多く、ネット上にも日付の説明をしているサイトがたくさんあります。Excelで日付を説明するには「シリアル値」の概念が欠かせませんが、ほとんどのサイトがシリアル値の簡単な説明で終わっていて、シリアル値のことを知ってても知らなくてもいいといったあいまいな説明をしているものまであります。しかし、Excelで日付が使えるようになるには、Excelにたくさんの日付を入力して、「なぜExcelがこのような動きをするのか」を真剣に考えることが大事です。
そこで、日付のことがよく分かっていない人が、どのような練習をすればシリアル値を理解することができるのか徹底的に解説したいと思います。
目次
- 1.日付入力の基本練習(復習)
- 2.「2020/1/25」と「43855」は同じ
- 3.シリアル値を用いて説明せよ
- 4.同じ月日なのにシリアル値が違う
- 5.シリアル値か文字列か
- 6.年・月・日を非表示にする
- 7.ユーザー定義の書式設定
- 8.曜日を直接入力してはいけない
- 9.日付文字列をシリアル値に変換する
1.日付入力の基本練習(復習)
日付のシリアル値を完全理解するには、まず、日付の入力方法を練習して、日付の性質を知ることが大事です。特にオートフィルによる入力を練習することは極めて大事です(参考:【Excel3級レベル】オートフィルを利用した表の作成手順と入力練習(初心者特訓Part5))。
(1)Excelが自動的に日付と判断する
問題
Excelに「1日」「1月1日」と入力してオートフィルをしなさい。
解説
1行目に「1日」「1月1日」と入力します。これらをそれぞれオートフィルします。
32行目以降を比較します。A列のほうは32日、33日、・・・となっているのに対して、B列のほうは2月1日、2月2日、・・・となっています。
Excelでは原則として数字と文字列が混ざっている場合、連続データとして扱いますから、32日、33日、・・・となります。しかし、日付とみなせる文字列を入力した時は、自動的に日付と解釈して1月32日、1月33日ではなく、2月1日、2月2日、・・・となります。この時、自動的に日付の表示形式になります。
半角で「1/1」や「1-1」と入力すると「1月1日」も変換されます。Excelが自動的に日付を入力したものと判断して変換します。
日付をオートフィルすると1日ずつ増えますが、単なるコピーをするには「セルのコピー」にします。
(2)月日を入力すると自動的に年が補完される
問題
「2月1日」と入力してオートフィルをしなさい。
解説
1行目に「2月1日」と入力します。これをオートフィルします。
この画面では、2月28日の次が3月1日になっています。これは入力した年がうるう年でなかったためです。
数式バーには「2019/2/28」と表示されています。
もし、2020年のようにうるう年で同じ操作をすると2月29日まで表示されます。数式バーには「2020/2/29」と表示されています。
「2月1日」のように月と日だけを入力した場合、入力した時点の年が補完されます。さきほどの設問で「1日」と入力しましたが、日付と解釈されませんでした。日にちだけ入力しても、年と月は補完されません。
(3)年をまたぐ時は注意せよ
問題
年度末(3月末)の日付を入力しなさい。
解説
年度末は3月31日です。月と日だけを入力すると、入力した年が補完されますから、必ず数式バーを確認します。
例えば、Excelを12月に使っていて、翌年3月の年度末のつもりで「3月31日」と入力しても、それは同じ年の3月31日なので年度末ではありません。
逆に、Excelを1月に使っていて、先月のつもりで「12月31日」と入力しても、それは先月ではなく、同じ年の年末となります。
年をまたいで日付を入力するには、年を省略せずに入力しなければなりません。月日だけを入力した場合は必ず数式バーで確認するようにします。
(4)オートフィルをしたときは翌年になる
問題
「12月30日」と入力してオートフィルをしなさい。
解説
1行目に「12月30日」と入力します。これをオートフィルします。
12月31日の次が、1月1日となりますが、この1月1日は翌年の日付になります。
月と日だけを入力したセルは、自動的に入力した年が補完されますが、オートフィルによって年をまたいだ場合は翌年になります(詳しくは後述)。
(5)いろいろなオートフィル
問題
次のように入力しなさい。
解説
12月21日の次に12月24日と入力します。この2つのセルを選択してオートフィルをすると3日ずつ加算されます。これを繰り返すと翌年の日付になります。
1月5日の次に1月4日と入力します。この2つのセルを選択してオートフィルをすると1日ずつさかのぼっていき、前年の日付になります。
1月1日の次に2月1日と入力します。この2つのセルを選択してオートフィルをすると1か月ずつ増えていきます。
2.「2020/1/25」と「43855」は同じ
オートフィルで日付が入力できるのは、Excelが日付を連番として管理しているからです。
(1)シリアル値と日付の表示は切り替えができる
問題
「43855」と入力して、表示形式をyyyy/m/dの日付の形式にしなさい。また、標準に戻しなさい。
解説
「43855」と入力します。これは単なる数値です。数式バーも43855です。
これを日付の表示形式(短い日付形式)にします。「2020/1/25」となります。数式バーも2020/1/25です。
Excelは1900年1月1日を基準として日付を管理しています。Excelで数値を入力して、日付の表示形式にすると1900年1月1日を1日目とする日付に変換されます。これを「シリアル値」といいます。
1900年1月1日を1日目とすると、2020年1月25日は43855日目にあたります。2020年1月25日のシリアル値は43855です。シリアル値と言えば特別な数のように聞こえますが、単なる整数です。
日付の表示形式が設定されているセルに1と入力すると、1900年1月1日となります。表示形式が日付となっているセルに、数値を入力しても日付の形式になります。
日付の表示形式を取り消すには、表示形式を「標準」にします。日付の表示形式を標準にすると5桁の数値になります。
(2)日付を入力するとシリアル値が保存される
問題
「2020/1/25」と入力してオートフィルしなさい。また、表示形式を標準にしなさい。
解説
「2020/1/25」と入力してオートフィルをします。年月日を「yyyy/m/d」の形式で入力すると、自動的に日付と判断され、表示形式が日付となります。
ところで、Excelのセルは、データと書式の2つの情報が保存されています(詳しくは、【Excel】セルにはデータと書式の2つの情報が別々に保存されている)。日付を入力すると、データとしてシリアル値が保存されます。
例えば、2020/1/25と入力するとセルには43855が保存されます。しかし、セルにも数式バーにも「2020/1/25」と表示されます。それはセルの表示形式やWindowsの設定によって「yyyy/m/d」の形式で表示するきまりになっているからです。Excelに「2020/1/25」と入力するのと「43855」と入力するのは、保存されるデータは全く同じです。書式(表示形式)によってセルの表示を切り替えているだけです。
表示形式を標準にすると連番になります。
3.シリアル値を用いて説明せよ
問題
オートフィルをしたときに「3月31日」の次が「4月1日」となる理由を述べなさい。また、「12月31日」の次が、翌年の「1月1日」となる理由を述べなさい。
解説
3月31日という情報だけでは西暦何年かが分からないので、1900年1月1日からの経過日数(シリアル値)を計算することができません。そこで、Excelで月と日だけを入力した場合、入力した時点の年を補完します。
これによって、シリアル値を計算することができ、セルにシリアル値が保存されます。オートフィルをすると、そのシリアル値に1が加算されるため、翌日の日付が表示されます。4月1日になるのは1900年1月1日からの経過日数に1を足しているからです。
Excelで「1月1日」と入力しても翌年の日付にはなりません。入力した時点の年が補完されるからです。
しかし、12月31日を入力したあとで、オートフィルをするとシリアル値に1が加算されるので翌年の日付になります。日付を入力するときには、1900年1月1日からの経過日数を入力していることを意識します。
4.同じ月日なのにシリアル値が違う
問題
「2月28日」と入力してオートフィルをしたとき、次の日付は何月何日になるか。
解説
例えば、Excelで入力しているのが2020年の場合、2020年2月28日とみなされます。このセルにはシリアル値43889が保存されます。オートフィルをするとシリアル値が加算されます。うるう年なのでその翌日は2月29日です。シリアル値は43890です。
しかし、2021年に入力した場合、2021年2月28日とみなされます。このセルにはシリアル値44255が保存されます。うるう年ではないのでその翌日は3月1日です。シリアル値は44256です。
このように、画面上、同じ日付が表示されているように見えても、保存されているシリアル値が異なることがありますので注意しなければなりません。
5.シリアル値か文字列か
(1)日付と判定される形式
問題
「43855」「20200125」「2020年の1月25日」「平成10年10月10日」と入力して、表示形式をyyyy/m/dの日付の形式にしなさい。また、表示形式を和暦の日付にしなさい。
解説
「43855」の表示形式を日付にすると「2020/1/25」となります。43855日目にあたる日付が表示されます。
「20200125」の表示形式を日付にするとエラーとなり、大きすぎる日付は####となります。1900年1月1日を1日目とすると20200125日目は西暦57207年となりExcelの計算の限界である9999年を超えてしまいます。8桁の数値はシリアル値ではなく、日付でもありません。
「2020年1月25日」「2020-1-25」「2020/01/25」など決まった形式で入力すれば、Excelが日付であると認識して自動的にシリアル値が保存されますが、それ以外の形式の場合、単なる文字列として認識されシリアル値にはなりません。したがって、日付の表示形式にしても「2020/1/25」にはなりません。
和暦の日付を入力すると右揃えになります。和暦の日付を入力してもシリアル値が保存されます。シリアル値として保存される場合、入力した時に右揃えになります。セルの表示は和暦ですが、数式バーは西暦です。セルに保存されている値はシリアル値です。
今度は、セルの書式設定で、和暦の表示形式にします(参考:【Excel】表示形式はセルの書式設定なのでセルの値は変わらない(表示形式の基本))。
シリアル値が保存されていれば和暦の日付も計算されますが、単なる文字列の場合、和暦にはなりません。このようにセルに入力されているデータがシリアル値か、単なる文字列かによってExcelの動作が異なりますので、注意が必要です。
(2)文字列として入力した日付
問題
表示形式を文字列にして「1/25」と入力してから、表示形式を標準にするとシリアル値として保存されるか。
解説
表示形式が標準の場合、「1/25」と入力すると入力した年が補完され、日付の表示形式になります。このセルにはシリアル値が保存されています。
今度は、表示形式を文字列にします。「1/25」と入力しても入力した年は補完されません。そして、表示形式を標準にしても入力した年が補完されず、日付の表示形式にもなりません。文字列として入力したものはシリアル値ではありません。
そのあとで表示形式を標準にしてもシリアル値にはなりません。
ダブルクリックして、確定すると日付として認識されます。
6.年・月・日を非表示にする
問題
(1)「2020年4月10日」と入力して「yyyy年m月」の表示形式にしなさい。また、「m/d」の表示形式にしなさい。
(2)「西暦2020年4月1日」と入力して「m/d」の表示形式にすることはできるか。
解説
「2020年4月10日」と入力すると右揃えになり、数式バーに2020/4/10と表示されます。これは日付として認識されたことを意味しています。
セルの書式設定によって、表示形式を「yyyy年m月」にします。
このように表示形式によって日にちの部分を消すことができますが、数式バーには残っています。これはセルにシリアル値が保存されているからです。
次に、セルの書式設定によって、表示形式を「m/d」にします。
表示形式で年の部分を消すことができますが、数式バーには残っています。このように表示の形式をいろいろと変えられるのは、入力されているデータがシリアル値だからです。
「西暦2020年4月1日」と入力しても右揃えにはなりません。西暦を付けてしまうと文字列として認識されるためシリアル値にはなりません。
シリアル値ではないので、表示形式を変えてもセルの表示は変わりません。
7.ユーザー定義の書式設定
(1)ユーザー定義
問題
「2023/2/25」にセルA3~A13の表示形式を設定するとどのような表示になるか。
解説
セルA1を絶対参照で参照します。
表示形式を標準にするとシリアル値になります。セルに保存されている値が44982であることが分かります。
表示形式をユーザー定義にして、「yyyy」にすると2023だけになります。2023/2/23の年の部分だけを取り出したものですが、月日の情報が消えたわけではありません。セルの表示は2023ですが、保存されている値は44982です。セルの表示と保存されている値が異なることに注意します(参考:【Excel】セルの表示形式「ユーザー定義」書式記号完全総まとめ)。
「m」にすると月だけになりますが、年と日にちを非表示にしただけで情報が消えたわけではありません。セルに保存されている値は44982です。「d」にすると日にちだけになります。
西暦年4桁と月2桁をつなげて6桁にするには「yyyymm」とします。「yyyymmdd」で8桁になります。6桁や8桁の数値のように見えますが実際に保存されている値は5桁の整数(シリアル値)です。
和暦の場合はgggが元号で、eが年です。
「geemmdd」で7桁になります。
曜日はaで表します。aが3つで「土」、4つで土曜日になります。セルには日本語が表示されていますが、セルには日付(シリアル値44982)が保存されていることに注意します。
これらを組み合わせて「yyyy年m月d日(aaa)」とすると2023年2月25日(土)となります。
(2)セルの表示と保存されている値が異なることがある
問題
「125」「土」と表示されているセルは、日付(シリアル値)ではないと判断してよいか。
解説
125と直接入力すると、セルにも125が保存されます。
しかし、セルに125と表示されているかと言って必ずしもその数値が保存されているとは限りません。必ず数式バーを確認します。2020/1/25という日付になっています。
表示形式を見ると「md」となっています。
表示形式を標準にするとシリアル値になります。このように、セルに表示されている数と実際にセルに保存されている値が異なることがありますので注意が必要です。
また、「土」を直接入力すると、日本語としての「土」が保存されます。
しかし、数式バーが日付になっていれば日本語としての「土」ではなく、表示形式が「aaa」になっている日付(シリアル値)です。
8.曜日を直接入力してはいけない
問題
A列に2021年1月1日~10日を入力した。
A列を日にちだけにして、B列に曜日を表示しなさい。
解説
曜日を表示するには日付(シリアル値)が必要です。そこでA列をイコールで参照します。
A列を選択します。表示形式を「d」にします。これで日にちだけになりましたが、年と月が消えたわけではなく、2021年1月はセルに保存されています。
B列を選択します。表示形式を「aaa」にします。曜日になります。
9.日付文字列をシリアル値に変換する
日付を表す文字列に1を掛ける(または0を足す)とシリアル値に変換することができます。詳しくはこちらの記事をご覧ください。
解説は以上です。