Excelで勉強記録表を作ろう-その1-
自分の勉強記録を勝手に計算してくれる表が欲しい!
とおもいたったため、作成してみることにします。
表のイメージを考えてみる
表に自分が求めている条件を書き出してみます。
<前提条件>
・何月かを入力したら、勝手に日付と曜日が更新される
・一日に分けて勉強時間を設けることがあるので、それを勝手に足してほしい
・時間を0.00hみたいに表示させたい
<追加で設定したいこと>
①日付が記載されていない箇所はグレーアウトにしたい
②土日は色を変えたい
③達成したら達成したことを示すものが欲しい
前提条件をクリアできる表の枠組み作成
まずは、表示させるための枠組みを作ります。
おおまかな枠組みの作成
左から、日付、曜日、学習①~学習⑩、合計(日)欄を作成します。
次に、縦に32マス,横13マスで太枠で囲います。
これにより、31日間ある月にも対応できるようにします。
勝手に日付と曜日が記載される関数の組み込み
先ほど作成しておいた、年と月を記載する欄を用いて、関数を作ります。
日付を記載する仕組みの作成
1日のセルに記載する関数
日付の記載が始まる箇所に以下関数を記載します。
=DATE(A2,B2,1)
"A2"=何年かを記載するセルを指しています。
"B2"=何月かを記載するセルを指しています。
上記を記載後、そのセルの書式設定を開きます。
[ユーザー定義]を選択し[種類(T)]の下の欄に"d"と入力します。
そうすることで、1と表示されるようになります。
2日~31日のセルに記載する関数
2日から31日で使用するセルには以下関数を記載します。
=IF(MONTH(C3+1)=$B$2,C3+1,"")
"C3"=先ほど関数を記載した、1日のセルを指しています。
この関数は、日付を1日ずつ進めながら、指定した月と一致するかどうかを判定する関数です。
一致していれば翌日の日付を表示させて、
そうでない場合(29日で終わりで30日がなく、翌日は別の月になる場合)は、空欄になります。
このセルも、書式設定を開いて、
[ユーザー定義]を選択し[種類(T)]の下の欄に"d"と入力します。
そうすることで、2のように日程で表示されるようになります。
記載が完了したら、31日のものを記載するセルまで、オートフィル(ドラッグ)で下のセルにコピーしていきます。
"B2"のセルに6月と入力している場合、次のように31日のセルは空白になっているはずです。

曜日を記載する仕組みの作成
曜日の記載が始まる箇所に以下関数を記載します。
=C3
"C3"=曜日を対応させたい日付を記載しているセルを指しています("1"と記載されているセル)。
記載が完了したら、そのセルの書式設定を開きます。
[ユーザー定義]を選択し[種類(T)]の下の欄に"aaa"と入力します。
そうすることで、日や月と表示されるようになります。
記載が完了したら、31日のものを記載するセルまで、オートフィル(ドラッグ)で下のセルにコピーしていきます。
これにより、
・何月かを入力したら、勝手に日付と曜日が更新される
という条件をクリアすることができます。
一日の勉強時間が勝手に合計される仕組みの作成
1日の"合計(日)"のセルに以下関数を記載します。
=SUM(E3:N3)
"E3"=学習①という時間を記載するセルを指しています。
"N3"=学習⑩という時間を記載するセルを指しています。
この関数は一日の勉強時間の総合計を出すものです。
記載が完了したら、31日のものを記載するセルまで、オートフィル(ドラッグ)で下のセルにコピーしていきます。
その後、1日の学習①を記載するセルから、31日の"合計(日)"が表示されるセルまで選択し、書式設定を開きます。
[ユーザー定義]を選択し[種類(T)]の下の欄に"0.00h"と入力します。
そうすることで、0.00hというように少数第二位まで表示され、数値の後ろに"h"という単位が表示されるようになります。
これにより、
・一日に分けて勉強時間を設けることがあるので、それを勝手に足してほしい
・時間を0.00hみたいに表示させたい
という条件をクリアすることができました。
月の勉強時間の総合計が表示される仕組みの作成
最後に、任意のセルにその月の勉強時間の総合計を表示させます。
以下コマンドを記載します。
=SUM(O3:O33)
"O3"=1日の合計時間が表示されるセルを指しています。
"O33"=31日の合計時間が表示されるセルを指しています。
このセルも先ほど同様に、書式設定をします。
[ユーザー定義]を選択し[種類(T)]の下の欄に"0.00h"と入力します。
そうすることで、0.00少数第二位まで表示され、数値の後ろに"h"という単位が表示されるようになります。
おわりに
これで前提条件をすべて満たした表を作ることができました。
次回は、追加で設定したいことを導入していきます。


