Excelは1日=24時間を「1」として扱い、1900年1月1日を1日目としてその経過日数で1900年以降の日付を管理しています。これをシリアル値と言います(【Excel】日付の「シリアル値」を本気で理解するには何を練習するべきか?)。なぜシリアル値という連番で管理しているかと言えば、日付を足し算・引き算するためです。Excelは日付をする計算機でもあります。
Excelでカレンダーや月間予定表を作るときに、シリアル値を理論的に理解できている人と適当に理解している人では作り方が全く違います。
そこで、今回は、何日前、何日後、残り日数の計算方法と、連続する日付の入力方法のいろいろなパターンを練習してみましょう。
目次
- 1.何日後・足し算
- 2.何日前・引き算
- 3.日数の差
- 4.初日と最終日と日数の計算
- 5.残り日数
- 6.足し算・引き算の繰り返し
- 7.連続する日付は足し算で求めなさい
- 8.初日のシリアル値はどこに入れるべきか
1.何日後・足し算
問題
2020/1/1の100日後の日付を求めなさい。
解説
1月1日に100日を加算すると「1月101日」になりますが、うるう年などを考慮しながら100日後が計算できるのはシリアル値で管理しているからです。2020/1/1と100を足します。
2020/4/10となります。
2020/1/1に100を加算すると、シリアル値で43831+100=43931と計算され、43931に相当する日付である2020/4/10が表示されます。
別解
2020/1/1をダブルクォーテーションで囲むと、文字列です。
これはシリアル値ではありません。しかし、100を足すことによってシリアル値として扱われます。43931となります。
日付の表示形式にします。
2.何日前・引き算
問題
2020/7/26の100日前~500日前の日付をそれぞれ求めなさい。
解説
2020/7/26から100を引きます。
オートフィルをします。これで完成です。このときシリアル値は100ずつ減っています。
3.日数の差
問題
平成20年2月2日と平成30年3月3日の日数の差を求めなさい。
解説
半角で「h20/2/2」と入力します。これは平成20年2月2日のことで、数式バーには「2008/2/2」と表示されます。右揃えになったのでシリアル値が保存されたことが分かります。
同様に「h30/3/3」と入力します。
シリアル値は1900年1月1日からの経過日数なので、最近のほうがシリアル値が大きいです。
過去よりも未来のほうがシリアル値が大きいのは明らかなので、h30/3/3からh20/2/2を引きます。3682日となります。
4.初日と最終日と日数の計算
問題
Excelを用いて次の各設問に答えなさい。
(1)2021/7/20を初日として15日間の日程でイベントを行い、その最終日である15日目を千秋楽とするとき、千秋楽の日付を求めなさい。
(2)初日が2021/5/18、最終日が2022/3/31のイベントの開催日数を求めなさい。
(3)200日程度かかることが予想される論文作成の提出締め切りが2022/1/15である場合、何日に作業を始めれば間に合うか。
解説
初日と日数から最終日を求める場合、最終日=初日+日数-1です。15日間の日程の場合、最終日は初日の14日後です。15ではありません。
初日に14を足します。2021/8/3です。
初日と最終日から日数を求める場合、日数=最終日-初日+1です。最終日から初日を引くだけでは1日足りないので1を加算します。
318日です。
日数と最終日から初日を求める場合、初日=最終日-日数+1です。
199日前から開始すれば締め切り当日を含めて200日間になります。2021年10月8日です。
5.残り日数
問題
(1)2022/1/15に入学試験があることが分かっている場合、2021/9/1~10について入試当日までの残り日数を求めなさい。
(2)2021/9/1~10について年末までの残り日数を求めなさい。
解説
前述のとおり、イベントの最終日までの残り日数は、最終日-当該日付+1です。しかし、イベントの初日(本番)が分かっている場合、そのイベント本番の日は準備期間に含まれないので、その準備期間である残り日数(本番までの残り日数)は、本番当日-当該日付となります。
絶対参照で引きます。
表示形式を標準にします。
年末である12月31日を年の最終日と考えると、今年の残り日数=大晦日-当該日付+1です。
表示形式を標準にします。
別解
年が明けて翌年の1日をイベント開始日と考えると、大みそかまでが年越しの準備期間と考えられます。今年の残り日数=翌年の元日-当該日付です。
6.足し算・引き算の繰り返し
(1)足し算の繰り返し
問題
1行目から10行目に「2024/2/25」から10日間の日付を入力しなさい。また、初日を「2024/12/25」に変更しなさい。
解説
「2024/2/25」と入力します。オートフィルをすることによって10日間の日付を入力することができます。
これは連続するシリアル値(数値)を直接入力しただけなので、先頭の日付を変えても2日目以降の日付が変わることはありません。
そこで、足し算を使います。1を足してからオートフィルをします。
初日を「2024/12/25」にすると連動して変わります。このように、初日が変わる可能性がある場合には足し算をします。
(2)引き算の繰り返し
問題
2022/1/7~2021/12/20の日付を入力しなさい。また、初日を「2022/1/5」に変更しなさい。
解説
「2022/1/7」と入力します。今度は引き算をします。
1を引いてからオートフィルをします。
初日を「2024/12/25」にすると連動して変わります。このように、引き算によってさかのぼる計算をすることができます。
(3)1週間おきの日付
問題
2022年12月1日が木曜日であることが分かっている。2022年12月~翌年3月の木曜日の日付をすべて求めなさい。
解説
2022年12月1日が木曜日であることが分かっている場合、その7日後も木曜日です。
3月末までオートフィルをします。シリアル値が7ずつ増えるので、年を越しても正しく計算されます。
(4)土日の日付を求める
問題
2022年12月3日の曜日を求め、2022年12月の土日の日付をすべて求めなさい。また、2023年1月の土日の日付をすべて表示しなさい。
解説
2022年12月3日と入力し、イコールで参照します。
表示形式を「aaa」にして曜日を表示します。
土曜日であることが分かります。1を足すと日曜日の日付を求めることができます。
土曜日の日付に7を足すと翌週の土曜に日付を求めることができます。
以降7日ずつ足すことによって、土日の曜日を求めることができます。
12月31日が土曜日です。翌年2023年1月1日が日曜日と言うことになります。そこで先頭を2023年1月1日にします。日曜日の次が月曜日なので日月の日付になってしまいました。
2日目の数式を+6に変更します。
7.連続する日付は足し算で求めなさい
問題
「12月21日」「1月1日」と入力し、それぞれオートフィルをして12月21日~1月11までの22日間の日付を入力した。
さらに、その隣の列に曜日を入力した。
この操作の問題点を指摘したうえで、連続した日付となるように修正しなさい。
解説
12月21日、1月1日と入力してオートフィルをしましたが、年を省略して月と日だけを入力すると、入力している年が補完されて、シリアル値が計算されます。したがって、12月31日と1月1日は連続していません。
1月を翌年の日付にするためには、西暦を入力しなければなりませんが、このような修正をするのは間違いです。
連続する日付を入力するときには原則として1を加算します。最初の日付を入力したら、次の日付は1を足します。
オートフィルをします。さらに12月31日に1を足します。
右にコピーします。足し算をすればシリアル値で計算するので年を越しても日付が連続します。
曜日も直接入力してはいけません。隣の列にシリアル値がありますから、イコールで参照するべきです。
表示形式を「aaa」にします。
先頭の日付を変えると、連動して日付と曜日が変わります。
8.初日のシリアル値はどこに入れるべきか
(1)年・月・日を分けて入力するパターン
問題
次の図で2022年1月1日~10日の日付と曜日を表示しなさい。また、2023年4月11日~20日にしなさい。
解説
西暦年と月を入力したとします。スラッシュで連結して1日の日付を求めます。
表示形式を「d」にします。
1を足して、オートフィルをします。
セルには1~10の連番が表示されていますが、実際には44562~44571の連番を求めています。
曜日を求めるため、イコールで参照します。
表示形式を「aaa」にします。これで完成です。
2023年4月にすると曜日が変わります。
さらに、スラッシュの後を11にすると、11日~20日になります。
別解
2022/1/1を入力しておきます。
イコールで参照します。
表示形式をそれぞれ「yyyy」「m」「d」とします。
1を足して、オートフィルをします。
曜日を求めるため、イコールで参照します。
表示形式を「aaa」にします。これで完成です。
最初の日付を2023年4月11日にすると曜日が変わります。
(2)年月と日を分けて入力するパターン
問題
次の図で2022年1月1日~10日の日付と曜日を表示しなさい。また、2023年4月11日~20日にしなさい。
解説
2022/1/1を入力します。
イコールで参照します。
表示形式をそれぞれ「yyyy年m月」「d日」とします。
1を足して、オートフィルをします。
曜日を求めるため、イコールで参照します。
表示形式を「aaa」にします。これで完成です。
最初の日付を2023年4月11日にすると曜日が変わります。
解説は以上です。TODAY関数の解説へつづく・・・