Excel での日々の業務、一日のなんらかの工程をチェックする年間を通した表を作成したり、
一日ごとのタスクをチェックしていく表であったり・・。
仕事やプライベートでも、日付を使用して表を作成する機会は多いんじゃないでしょうか。
そういう時、
「一年分を一気に作れないかなぁ・・」
と思ったことがある方もいると思います。
Excel にちょっと詳しい人にとっては、日付を一気に並べることは簡単な事かもしれませんが、
やり方を知らない人にしてみれば、そういう事が出来るのかどうかもわかりません。
やり方としてはいろんな方法がありますが、
ここでは関数を使用した、ほんの一例を紹介したいと思います。
関数を使って一気に日付を並べる数式
とりあえず、日付を並べる数式です。
=DATE(2026,1,1)+SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1)
この式は、2026年の年間を通した日付を並べてくれます。
A1 セルにこの式をコピペすると、日付のシリアル値が A365 のセルまで365日分スピルされます。
日付のシリアル値とは・・・、Excel は日付をシリアル値で管理しているのです。
たとえば、通常よく使われる 1900日付システムでは次のようになります。
- 1900年 1月 1日 → 1
- 1900年 1月 2日 → 2
- 1900年 1月 3日 → 3
- 1900年 1月 4日 → 4
このように、1900年1月1日を基準にして、1日ごとに 1 ずつ増えていきます。
ちなみに、1900日付システムでは、2026年1月1日のシリアル値は 46023 です。
ただし、Excel には 1904日付システム という別の方式もあります。
その場合は、同じ日付でもシリアル値が変わります。
とはいえ、ふだん使う場面では 1900日付システム を前提にして大丈夫なことが多いので、ここでもその前提で話を進めていきます。
日付として目で見てわかるようにしたいのなら、365日分を選択するか A列すべてを選択して、
セルの書式設定から表示形式を日付にすれば目で見てわかるような表示になります。
セルの書式設定のダイアログボックスを出す方法はいくつかありますが、ここではあまり触れません。
ホームタブからでも、右クリックからでも、「ctrl + 1 」のショートカットキーからでも、どこからでもどうぞ♪
365日分スピルされるとは・・・、
1つの式が、必要なぶんだけ自動で周りのセルに結果を並べてくれる仕組みのことです。
便利な機能ですが、あとから手を加えたいときに制約が出やすいので、あとで手を加える予定のものなら表をコピーして別のところに 値貼り付け して使用したほうがいいです。
数式の中身を解説
=DATE(2026,1,1)+SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1)
この数式の中には、DATE 関数と、SEQUENCE 関数という2つの関数を使用しています。
DATE 関数は、指定した日付を数値(シリアル値)として返してくれます。
SEQUENCE 関数は数列を返してくれる関数です。
簡単に言えば、列や行をどれだけ増やすかを決めてくれる関数です。
この数式をざっくり説明すると、
「2026年の1月1日から12月31日まで、365日分の日付を1日ずつ並べる」
という数式です。
DATE 関数
=DATE(2026,1,1)
=DATE(年,月,日)
まず DATE 関数で作成したい年の日付を指定します。
厳密にいうと、表示させる基準となる最初の日付になります。
SEQUENCE 関数
SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1)
SEQUENCE(行,列,開始,目盛り)
↓
SEQUENCE(何行増やす?,何列増やす?,どこから始める?,何個ずつ増やす?)
この関数で、どういう風に日付を並べていくかを決めています。
何行増やすか → DATE(2027,1,1)-DATE(2026,1,1)
SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1)
SEQUENCE(行,列,開始,目盛り)
↓
SEQUENCE(何行増やす?,何列増やす?,どこから始める?,何個ずつ増やす?)
これは、2027年1月1日から2026年1月1日までを引いた日数。
Excel は日付をシリアル値で管理しているので、
- 2027/1/1 → 46388
- 2026/1/1 → 46023
- 46388 ー 46023 = 365
となって、365行増やすという意味になります。
なんか回りくどいなぁ・・と思うかもしれませんが、これが便利なのは「うるう年」もちゃんと計算してくれるんです。
「うるう年」のある年は、ちゃんと366日に増やしてくれますよ。
何列増やすか → 1
SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1)
SEQUENCE(行,列,開始,目盛り)
↓
SEQUENCE(何行増やす?,何列増やす?,どこから始める?,何個ずつ増やす?)
日付を下に向けて1列に並べて表示したいので「1」でいいです。
仮に「2」や「3」を入れて、どう表示されるか見てみるのも理解が深まるかもしれません。
どこから始めるか → 0
SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1)
SEQUENCE(行,列,開始,目盛り)
↓
SEQUENCE(何行増やす?,何列増やす?,どこから始める?,何個ずつ増やす?)
スピルされた値の「開始位置」を決める部分です。
「2026/1/1 から表示したいなら、1から始めるのでは?」と思うかもしれませんが、
ここで指定しているのは「何番目か」ではなく、どの数値からスタートするかです。
今回の式では、最初に
DATE(2026,1,1) →(=2026年1月1日)を用意して、そこに SEQUENCE で作った数値を足しています。
つまり、
- 0 にすると → 2026/1/1 に 0日足す → 2026/1/1
- 1 にすると → 2026/1/1 に 1日足す → 2026/1/2
- 2 にすると → 2026/1/1 に 2日足す → 2026/1/3
という仕組みです。
SEQUENCE 関数では、
- 365行分の連続した数値を作る
- 1列だけ使う
- 0から始める
- 1ずつ増やす
ということを指定しています。
その数値を DATE(2026,1,1) に足しているので、2026/1/1 から1日ずつ増えた日付が並びます。
なので、2026年1月1日から始めたい場合は「0」からスタートする必要があります。
何個ずつ増やすか → 1
SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1)
SEQUENCE(行,列,開始,目盛り)
↓
SEQUENCE(何行増やす?,何列増やす?,どこから始める?,何個ずつ増やす?)
日付を1日ずつ増やしたいので、「1」です。
「2」や「3」を入れると2日・3日飛びで年をまたいで表示されます。
それもそのはず、365日分の行数は確保されているので、年をまたいで埋めてきます。
ということで、この SEQUENCE 関数では、
「365行分・1列の連続した数値を、0から始めて1ずつ増やしていく」
ということをやっている部分です。
複数の関数を組み合わせた結果は?
=DATE(2026,1,1)+SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1)
最初のDATE 関数は選択した1つのセルに、指定された日付だけのシリアル値を返すのみなので、
DATE 関数とSEQUENCE 関数を「+」で繋ぎます。
これで、
最初のDATE 関数で指定した 2026/1/1 を起点にして、そこから行を 365 行分確保し、そこに 2026/1/1 から1日ずつ増やした日付を埋めていく。
ということになります。
最初の方でも少し触れましたが、目で見てわかるような日付にしたいなら、セルの書式設定で表示形式を日付にすれば、見てすぐわかる表示になります。
一つのセルに、一つの値を推奨
今の状態は指定した列にシリアル値が並んでいるだけなので、表としては機能していません。
表示形式を日付にしていても、2026/1/1 、2026/1/2 ・・・とかになっていて見栄えがいいとはいえないんじゃないかと思います。
なので、年・月・日・曜日と分けていきましょう。
「こまかく分けすぎなんじゃない?」
と思ったそこのあなた、総務省も【1セル1データ】を推奨してるんですよ。
年・月・日・曜日を分けていこう
=DATE(2026,1,1)+SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1)
この数式を A1 セルに入れている事を前提にして話を進めていきたいと思います。
年をとりだす|YEAR 関数
YEAR 関数は、指定されたシリアル値の年を1900~9999の範囲で整数で返してくれます。
=YEAR(A1#)
=YEAR(シリアル値)
1年間の表なので、年を取り出す意味はあまりないと思いますが、そこは流してください。
A1 には 2026/1/1 のシリアル値が入っているので、「A1」と入れます。
A1 の後ろの「#」はナニ?
「#」は、そのセルからスピルして広がっている範囲全部という事を表しています。
この場合、A1 セルを起点にスピルした範囲全部から年を取り出してね、という意味です。
この関数をB2 セルに入れると、A1 セルからスピルされた日付に対応した年を返してくれます。
これで、「2026」が 365 行分並びました。
月をとりだす|MONTH 関数
MONTH 関数は、指定されたシリアル値の月を1~12の範囲で整数で返してくれます。
=MONTH(A1#)
=MONTH(シリアル値)
A1 には 2026/1/1 のシリアル値が入っているので、「A1」と入れます。
「#」で A1 セルを起点にスピルした範囲全部を指定しています。
この関数をC2 セルに入れると、A1セルからスピルされた日付に対応した月を返してくれます。
これで、365 日分「月」が出ました。
日をとりだす|DAY 関数
DAY 関数は、指定されたシリアル値に対応する日を1~31 までの整数で返してくれます。
=DAY(A1#)
=DAY(シリアル値)
A1 には 2026/1/1 のシリアル値が入っているので、「A1」と入れます。
「#」で A1 セルを起点にスピルした範囲全部を指定しています。
この関数をD2 セルに入れると、A1セルからスピルした各日付の日を返してくれます。
「うるう年」がある年でもバッチリです。
曜日をとりだす|TEXT 関数
TEXT 関数は、指定した値に書式設定をして、文字列に変換して返してくれる関数です。
=TEXT(A1#,"aaa")
=TEXT(値,表示形式)
A1 には 2026/1/1 のシリアル値が入っているので、「A1」と入れます。
「#」で A1 セルを起点にスピルした範囲全部を指定しています。
「“aaa”」は、短い曜日の表示形式で返してね、という意味です。
「””」ダブルクォーテーションで囲むのを忘れないように。
この関数を E2 セルに入れると、A1 セルからスピルした分に対応した曜日を返してくれます。
仮に指定した値の曜日が金曜日だとしたら、
- aaa → 金
- aaaa → 金曜日
余談ですが、この式の表示形式の箇所を
=TEXT(A1#,"yyyy年m月d日(aaaa)")
のようにすると、「〇〇〇〇年〇月〇日(〇曜日)」となります。
日付の表示ができたらコピーして別の場所へ
これで1年間の日付が表示できたと思います。
簡単なチェックリストの様なものなら、このままでも良いかもしれません。
でも、あとから行を増やしたり、なにかしら手を加えるかもしれないのなら別の場所にコピーしたほうが使い勝手がいい場合が多いです。
1年を通してスピルしているデータなので、手を加える際に結構な制限があります。
別の場所に移せば、テーブルにするなり、行を増やすなり、どうとでも出来るようになります。
コピーして貼り付ける際は、値として貼り付けるのを忘れないでくださいね。
年間の日付を出すためにまとめた数式
気が付いた方もいるかもしれませんが、
「この関数って・・・ある程度まとめれるんじゃね?」
私を小馬鹿にしながら、そう思っているアナタ、その通りです。
ある程度はまとめる事が出来ます。
「じゃあ、こんな回りくどい事をしないで最初に数式を出しとけ!」
という声を聞き流し、まとめる事が出来るものをまとめましょう!
年
=YEAR(DATE(2026,1,1)+SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1))
月
=MONTH(DATE(2026,1,1)+SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1))
日
=DAY(DATE(2026,1,1)+SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1))
曜日
=TEXT(DATE(2026,1,1)+SEQUENCE(DATE(2027,1,1)-DATE(2026,1,1),1,0,1),"aaa")
かなり長めの数式になってしまいますが、何年の日付を出しているのかを目で見て判断できるし、
なかなかに使い勝手はいいんじゃないかと思っております。
余分に1列使用しなくてもいいですしね。
まとめ
Excel にはたくさんの関数があります。
「こんな事は出来ないかな?」
と感じたものは、大概の事は出来るようになっています。
ここで書いた日付を作る方法も、いろんなやり方がある内の一つなので、あなたの知識の片隅にでも置いて頂ければ幸いです。
みなさんにも、自分にとってやり易い方法、分かり易い方法があると思います。
あなたにとって意義のある知識を吸収して、知識の幅を広げていきましょう♪



コメント