【スプレッドシート】カレンダーを自作する
今回は、スプレッドシートでカレンダーを作っていきたいと思います。スプレッドシートには、テンプレートがあるのでそれを使ってもいいですが、プルダウンで指定の年月のみを表示するようにしたいので、自作していきたいと思います!
新しくタブを作る
新しいシートを追加して、名前をカレンダーに変更します。
プルダウンで年、月を入力する
まず初めに月の入力をします。セルC2が選択されている状態で、「データ」から「データの入力規制」を選択します。
すると次のような画面が表示されるので、
「リストを範囲で指定」を「リストを直接指定」に変更します。
テキストボックスに、「1,2,3,4,5,6,7,8,9,10,11,12」と入力し、「保存」します。
セルC3にプルダウンができたので、「1」を選択しておきます。
同様に年の方もプルダウンで作ってもいいのですが、月と比べて頻繁に変更することもないので、直接入力でもいいと思います。ここでは省略させていただきます。
曜日を入力する
セルB4に「日」と入力し、セルの右下のフィルハンドルをH4までドラッグします。
「土」曜日まで入力されていれば大丈夫です。
日付を入力する
基準となる日付を入力する
DATE関数を使って、セルB2、C2で選択されている年月を日付に変換します。
- A2 → =date(B2,C2,1)
DATE関数は、指定の年、月、日を日付に変更できます。
最初の日付を入力する
基準となる日付(選択した年月の1日)が最初の週の何曜日からなのかをWEEKDAY関数を使って入力していきます。
- B5 → =if(weekday($A$2)=1,$A$2,"")
WEEKDAY関数は、指定した日付に対応する曜日を数値で返してくれます。
なのでここでは、IF関数の条件式が、「セルAが日曜日(=1)であるかどうか」となり、真であればここにA2の値を入力し、偽であれば空白を返すことになります。
セルC5〜H5には次のように入力します。
- C5 → =if(B5="",if(weekday($A$2)=2,$A$2,""),B5+1)
- D5 → =if(C5="",if(weekday($A$2)=3,$A$2,""),C5+1)
- E5 → =if(D5="",if(weekday($A$2)=4,$A$2,""),D5+1)
- F5 → =if(E5="",if(weekday($A$2)=5,$A$2,""),E5+1)
- G5 → =if(F5="",if(weekday($A$2)=6,$A$2,""),F5+1)
- H5 → =if(G5="",if(weekday($A$2)=7,$A$2,""),G5+1)
これは、たとえばセルC5において、「B5が空白であれば、A2が月曜日(=2)であるかどうかで分岐し、空白でなければ(日付が入力されていれば)1日足す」という計算をしています。
1週目が入力できたので、2週目以降を入力していきます。
- B6 → =H5+1
- C6 → =B6+1
このセルC6のフィルハンドルをH6までドラッグします。
セルB6〜H6を選択した状態で、フィルハンドルをH8までドラッグ。
月末の表示
セルB9〜H9に次のように入力します。
- B9 → =if(H8="","",if(month(H8+1)=month($A$2),H8+1,""))
- C9 → =if(B9="","",if(month(B9+1)=month($A$2),B9+1,""))
このセルのフィルハンドルをH9までドラッグ。
B9〜H9を下にコピーする。
選択中の月以外は空白にするようにしているので、見た目上は空白ですが、数式が入力されていれば大丈夫です。
日にちのみ表示する
このままでは年と月が表示されているので日にちのみ表示するようにしましょう。
- B5〜H10を選択した状態で、
- 「表示形式」、
- 「数字」、
- 「表示形式の詳細設定」、
- 「カスタム数値形式」を選択
次のような画面が表示されるので、テキストボックスに「d」と入力して適用します。
これで選択した年月のカレンダー表示ができました。
最後に週ごとに予定などを入力できるように行を追加して、お好きな見た目に変更してみてください。
一応簡単に見た目を整えましたのでこれで完成とします。
お疲れ様でした。次回はこのカレンダーの日にちの下に「データ」タブから損益の情報を取得して表示していきます。
第1回 データ
第2回 カレンダー1
第3回 カレンダー2
第4回 集計
第5回 グラフ