Googleスプレッドシートでカレンダーを作成する方法を紹介します。
「表計算ソフトでカレンダーを作成する方法」を検索すると沢山の記事が見つかるのですが、その多くが各セルに数式を記述する方法で「なんか面倒だな」と思い記事にしました。
紹介される記事はどれも理にかなった正しい方法なのですが、せっかく数式を使うならもっと効率よく作成する方法があるはず。
この記事では、Googleスプレッドシートで1つのセルに数式を入力するだけで、ずっと使えるカレンダーを一瞬で生成する方法を紹介します。
「カレンダー作成に手間を掛けたくない」
「数式1つでカレンダーを生成したい」
という方は是非参考にしてみてください。
|
Googleスプレッドシートで作成するカレンダーの仕組み
今回説明する内容は、日曜日始まりの月カレンダーを前提にします。
月のカレンダーは、「左上の日曜日のセルから始まり、一日ずつ足され横に順番に進む」。
つまり、左上の日付さえ取得する事が出来たら後は一日つずつ足した日付を順番にセルに入力するだけでカレンダーは完成します。
左上の日付を取得する
では、左上の日付を取得するにはどうしたら良いのでしょう。
2021年4月のカレンダーを作成するとしたら、月の初日「2021年4月1日」を基準として計算します。
・「2021年4月1日」は月の初日なので必ず月の一周目、つまり当月で最も左上に近い日であること。
・左上の日付を取得するうえで重要なのが「2021年4月1日」は何曜日なのか、カレンダーの左から何番目の曜日なのか。
・左から何番目なのかが分かれば、「2021年4月1日」からその分の日数を引くことで左上の日付を求めることが可能。
カレンダー左上の日付を求める式:
◯◯年◯月1日 - (左からの曜日の数 ) = 月カレンダー左上の日曜日の日付
例えば「2021年4月1日」は木曜日なので、日曜日を1番としたら左から「5番目」。
この2つの情報を使った次の式で、左上日曜日の日付を取得する事ができます。
2021/4/1 - (5 - 1)
「2021年4月1日」の4日前が左上日曜日の日付になる事がわかりました。
WEEKDAY関数で日付から曜日の数値を取得
カレンダーを作成するには、曜日の数値が必要なことが分かりました。
では、曜日の数値を取得するにはどうしたら良いのでしょう。
Googleスプレッドシートで曜日の数値を取得する場合は、WEEKDAY関数 を使用します。
WEEKDAY(日付, [種類])
WEEKDAY関数は、日付から曜日に対応する数値を取得します。
取得する数値は引数[種類]に設定する数字で変わり
・引数[種類]が 1 又は無しの場合、日曜日の値を 1、 月曜日が2、火曜日が3、水曜日が4、木曜日が5、金曜日が6、土曜日が7。
・引数[種類]が 2 の場合は、月曜日が1、火曜日が2、水曜日が3、木曜日が4、金曜日が5、土曜日が6、日曜日が7。
・引数[種類]が 3 の場合は、月曜日の値を 0として数えます。
=WEEKDAY("2021/01/06")
引数[種類]の設定が無い場合は規定値の1になり、 日曜日の値を1として数えます。
“2021/01/06″は水曜日なので、日曜日が1、月曜日が2、火曜日が3、水曜日は「4」となります。
今回のカレンダー作成で使用する引数[種類]の設定は「1」もしくは設定無しで使用しますが、一応、引数[種類]を2に設定した場合も試してみましょう。
=WEEKDAY("2021/01/06",2)
引数[種類]が 2 の場合、日曜日の値は 0なので、水曜日は「3」になります。
|
月カレンダーの左上、第1日曜日の日付を取得
日付を「2021/4/1」と直接入力しても良いのですが、セルに年と月の数値が入力されているので、その数値を日付に変換して使います。
Googleスプレッドシートで数値を日付に変換する関数は DATE関数 です。
DATE(年,月,日)
第1引数に[A1]、第2引数に[C1]、第3引数に数値の1 を設定して当月の初日を取得します。
=DATE(A1,C1,1)
◯◯年◯月1日から (曜日の数値 – 1)の日数を引く
あらためて、カレンダー左上の日付を求める式を確認しましょう。
◯◯年◯月1日 - (左からの曜日の数 ) = 月カレンダー左上の日曜日の日付
この式に、DATE関数とWEEKDAY関数で取得した日付と、曜日の数値を当てはめると次のような数式になります。
=DATE(A1,C1,1)-(WEEKDAY(DATE(A1,C1,1),1) - 1)
日曜日を0として計算したいので、曜日の数値から -1 引いています。
結果:
「2021/4/1」と曜日の数値から、左上の日付「2021/03/28」が導き出されました。
取得した日付に日数を加え各セルに入力
「左上の日付が取得できたらカレンダーは出来たも同然!!」
確かに、あとは取得した日付に日数分足して順番にセルに入力すれば、間違いなくカレンダーは完成します。
年の数値や月の数値を変更すれば、それに対応して日付も変わりますし、ずっと使えるカレンダーとして何も問題ありません。
1)例えば次のように、取得した左上の日付に、1 , 2 , 3 と順番に足していく方法
=DATE(A1,C1,1)-(WEEKDAY(DATE(A1,C1,1),1) - 1)
=$A$3 + 1
=$A$3 + 2
=$A$3 + 3
・
・
・
2)又は前日の日付に 1 を足す方法も有りでしょう。
=DATE(A1,C1,1)-(WEEKDAY(DATE(A1,C1,1),1) - 1)
=A3 + 1
=B3 + 1
=C3 + 1
・
・
・
でも、カレンダーの全部のセルに数式を入力するのって面倒ですよね。
せっかく数式を利用するなら、もっと美しい方法があるはず。
次の項目では本題の、1つのセルに数式を入力するだけで、カレンダーを一瞬で生成する方法を紹介します。
|
SEQUENCE関数を使い一瞬でカレンダーを生成
まず、「カレンダーを一瞬で生成する」を実現する為に使用する関数 SEQUENCE関数 を説明します。
SEQUENCE(行数 , 列数 , 開始の値 , [増分量])
SEQUENCE関数は、行数・列数を指定し連続する数値の配列を返す関数です。
試しに、行数に6、列数に7、開始の値を1に設定してセルに入力してみましょう。
=SEQUENCE(6,7,1)
各セルに数値が順番に入力され、まるでカレンダーの様ではありませんか?
この数式1つで数値が出力される機能を利用すれば、全てのセルに数式を入力する事無くカレンダーが作成できると想像できます。
SEQUENCE関数の開始の値に「カレンダー左上の日付」を設定すれば、カレンダー全日の日付が生成されるはず。
=SEQUENCE(6,7,DATE(A1,C1,1)-(WEEKDAY(DATE(A1,C1,1),1) - 1) )
行数に6、列数に曜日分の7、そして開始の値に「左上の日付」を設定しました。
いよいよ左上のセルに数式を入力すると、一瞬でカレンダーが生成!!
あれ? よくわからない数値が生成されてしまいました。
SEQUENCE関数で日付を設定すると、12月30日からの日数に基づいて生成されるシリアル値が返されます。
つまり、この数値を変換すれば日付として表示されるはず。
シリアル値を日付に変換
生成されたシリアル値を日付の表示形式に変換します。
生成した数値のセルを選択し、メニューから 表示形式 > 数字 > 日付 をクリック
よくわからない数字のシリアル値が変換され、日付として表示されました。
日付として表示できましたが、カレンダーとして利用する場合は「日にち」の表示だけ良いので、表示形式を変更します。
セルを選択し、メニューから 表示形式 > 数字 > 表示形式の詳細設定 > カスタム数値形式 をクリック
カスタム数値形式の入力欄に「d」と入力。「適用」を押します。
カレンダーの日付表示が、「日にち」のみの表示に変更されカレンダーらしくなりました。
当月以外の日付をグレー表示
現在の表示では、全ての日付が同じ表示で見ずらいので、当月以外の日付はグレー表示になるように設定します。
メニューから 表示形式 > 条件付き書式 をクリック
セルの書式設定の条件で、「カスタム数式」を選択。次の数式を入力します。
=$C$1 <> MONTH(A3)
セル[C1]の月の数値と、MONTH関数で日付から取得した月の値を比べて、合致しない場合(当月以外の場合)は、書式スタイルでグレー表示
当月以外の日にちがグレー表示になりました。
ここで月の値を変更して見ましょう。
月の値を「5」に変更すると、5月1日(土)から始まる5月のカレンダーに変わりました。
うるう年を含め日付はスプレッドシートに任せられるので、Googleスプレッドシートがある限りずっと使えるカレンダーが完成しました。
|
TODAY関数でカレンダーを自動更新
完成したカレンダーは、年と月の数値を手動で入力する必要があるので、現在の日付に自動で対応するように変更します。
Googleスプレッドシートで現在の日付を取得する場合は TODAY関数 を使います。
TODAY()
年のセルに日付から年の値を取得する YEAR関数 に TODAY関数 から取得した日付を設定し入力します。
=YEAR(TODAY())
月のセルに日付から月の値を取得する MONTH関数 に TODAY関数 から取得した日付を設定し入力します。
=MONTH(TODAY())
TODAY関数によって現在の日付が取得されるので、手動で数値を入力する事無く、現在の年月が自動で更新されるようになりました。
続けて、カレンダーで今日現在の日付が分かりやすく表示されるように書式ルールを変更しましょう。
メニューから 表示形式 > 条件付き書式 をクリック
書式ルールで「日付」を選択、書式のスタイルを設定します。
当日の日付に設定した書式スタイルが反映され、カレンダーで今日現在の日付が分かりやすく表示されるようになりました。
|
|
|
国内で10年前からサービスを提供しているタスク管理・プロジェクト管理ツール。
利用者が100万人を超え、エンジニアの方以外にも、事務やデザイナー、マーケター、営業など、多様な職種の方にお使いいただいています。 |
|
|
|
|
|