月末の空白処理

ラボ

29日以降を自動で非表示にする

 カレンダーでは月によって小の月、大の月など月末が28日や31日に変化します。
 Excelで日程表などを作る際に、手作業で打ち込んだり、削除したりするのは面倒なので自動で表示・非表示出来るようにします。
 
 今回はVBAを使わずに数式マクロだけで行います。日程表や月報などでよく使うテクニックです。

作り方

 この日程表では、表題が「令和3年2月度」となっていますが、数式バーには、「2021/2/1」となっています。
 これはセルの書式設定のユーザ定義で「[$-ja-JP]gge”年”m”月度”;@」としているためです。

 今回は、日程表の基準をA1セルにして、日付と曜日を割り振っていきます。

日付(A列)の設定

 A3は、A1を参照し、セルの書式設定はユーザ定義で「d」として日付のみ表示するようにしています。
 セルの書式設定は、A3~A33までユーザ定義で「d」として日付のみ表示させます


 次のA4(2日目)~A30(28日目)までは、一つ上の行のセルに1を加えます。
 A4を設定したら、A30までドラッグすれば良いでしょう。
  A3 =A1
  A4 =A3+1
  A5 =A4+1 

 続いて小の月となる部分は以下の様にします。
  A31  =IF(DAY($A$30+1)<28,””,$A$30+1)
  A32  =IF(DAY($A$30+2)<28,””,$A$30+2)
  A33  =IF(DAY($A$30+3)<28,””,$A$30+3)

 この数式は28日の日付(A30セル)に1,2,3 をそれぞれ加えて、日付のみを取得し、28より小さい場合は空白。大きければ日付を表示しています。

曜日(B列)の設定

 曜日は、左の日付を参照するだけです。あとはユーザーの書式設定からユーザ定義で「aaa」とすればその日の曜日を表示してくれます。
  B1 =A1  
  B2 =A2
  B3 =A3

使い方

  A1のセルの日付を赤枠の数式バーで変更すれば、日付と曜日が変更されます。日付は1でないとダメです。

おまけ:「20日締め」の設定

 上記のサンプルを応用して「20日締め」にしてみましょう。少ない変更で実現できます。
 変更するのは、第1日目(21日)と、最後の3日間です。

第1日目は前の月の21日となりますので、数式マクロは以下の様になります。

  A3  =DATE(YEAR(A1),MONTH(A1)-1,21)

セルの書式設定では、「月/日」という書式の方が分かりやすいのでユーザ定義は、「m/d」とします。

 続いて最後の3日間は以下の様にします。
 A31  =IF(DAY($A$30+1)>20,””,$A$30+1)
 A32  =IF(DAY($A$30+2)>20,””,$A$30+2)
 A33  =IF(DAY($A$30+3)>20,””,$A$30+3)

 他の締日にしたい場合は、2120の所を変更すれば良いでしょう。

まとめ

 今回はVBAを使わずに数式マクロだけで月末の空白処理を実現してみました。
 日付処理はExeclではよく使われますので参考にしてみてください。

タイトルとURLをコピーしました