午前1:
・マイナポイント申請(第1弾、第2弾)
午前2:
・Word「ページ書式、画像の操作(挿入、変更、修正)」
午後1:
・座学「最新の学習指導要領(高校・情報)について」
・座学「html、W3C規格について」
午後2:
・相談「ダブルワーク時のブッキングについて、高齢の親について」
午後3:
・座学「最新の学習指導要領(中学・技術、高校・情報)について」
午後4:
・座学「最新の学習指導要領(中学・技術、高校・情報)について」
・相談「お客さんの対応について」
ここをご覧の皆さんはすでにご承知かと思いますが、
当教室の定休日は火曜日と金曜日、
そして「5週ある曜日の第1週」となります。
2022年10月は、土曜・日曜・月曜が5回あるため、
第1土曜(10/1)、第1日曜(10/2)、第3土曜(10/3)がお休みとなります。
そして9/30は金曜、10/4は火曜で定休日のため、5連休になります。
5月下旬から9月までは、火曜・金曜の定休日に外部講師の予定が入っていたので、
私個人としては4連休になるわけではありますが、
とはいえ貴重な連休であることに変わりはありません。
ではこの貴重な連休の中でもさらに貴重な5連休、
いったいどれくらいの頻度でありうるのでしょうか。
うちのルールでいうと、つぎの2つをともに満たす場合のみ5連休になります。
- 当月1日が土曜日であること。
- 月の最終日が31日であること。
これをExcelを使って計算してみようと思います。
まずは一番左の列(B列)に、当月の1日を日付データとして入力します。
今回でいえば「2022/10/1」と入力しています。
続けてC列に、MONTH関数を使ってB列に入っている日付から「月」を取り出します。
D列には「C列で求めた月に+1」した数値を求めます。
さらに、E列にYEAR関数を使ってB列の「年」を求めます。
そしてF列に、DATE関数を使ってE列の年、D列の月、そして1をくっつけた日付を求めます。
この時もしD列の値(月)が13だった場合、MONTH関数は自動的に翌年の1月にしてくれます。
かしこい!
で、ここがポイント。
G列に「F列で求めた日付に-1」したものを求めます。
これで当月の最終日を求めることができます。
その前にH列にWEEKDAY関数を使ってB列の曜日を求めます。
WEEKDAY関数は「日・月…」と答えずに、「1・2…」と答えます。(2番目の引数により異なる)
今回、10/1は土曜日のため、「7」を返していることがわかります。
あとは2つ前で求めたG列(当月の最終日)から、
日付を求めるDAY関数をI列に入れておきます。
J列にH列(当月1日の曜日)が7(土曜)でI列(当月最終日)が31の時に、
「●」を、そうでないときに「-」を返すIF関数を入力してやります。
ここまで出来たら、BからI列を選択し、
下方向にオートフィル(月単位)してやれば、
各月に5連休が存在するかどうかを求めることができます。
完成例では見やすいようにI列が「●」の時に塗りつぶす条件付き書式を設定しています。
とりあえず今回はこの先10年分(120か月)を確認してみました。
その結果、5連休があるのは10年で10回ということで、頻度としてはちょうど1年に1回。
パーセンテージでいうと8.3%(10/120)ですね。
さらに、2028年には2回あり、2024年と2030年には0ということもわかりました。
今回はわかりやすいように途中経過をそれぞれシンプルに求めていますが、
計算式をくっつける「ネスト」を使えば列数を無駄に使わずに済みます↓
↑の式を日本語に翻訳すれば、
- 「もし当月1日が土曜日で、かつ当月最終日が31日なら「●」、そうでなければ「-」と返せ」
ということになります。
実務でExcelを扱う際は、前半のように「目的に応じた計算式を作る」だけでなく、
後半のような「誰かが作った謎の式の目的を暴く」というスキルも必要になります。
(ケースによっては不具合の原因を探す・修正する、も含まれます。)
とはいっても、自分で計算式を作ることができれば、
必然的に人が作った式を読むこともできるようになりますね。
あとは場数を重ねていくだけですね(にっこり