スナックelve 本店

バツイチ40代女の日記です

No.1488 エクセルでカレンダーを作ろう

続けるぜ! 誰得シリーズw

イメージ

f:id:elve:20180212232528p:plain
こういう表を埋めることを考える
年はA1、月はC1セルに入っている

B3

ここは条件としては

  • 1日が日曜日だったら1
  • それ以外で空欄。

1日の曜日は

WEEKDAY(DATE($A$1,$C$1,1))

(1が日曜日7が土曜日)
なのであれがこうして

=IF(WEEKDAY(DATE($A$1,$C$1,1))=1,1,"")

C3~H3

ここは条件としては

  • 1日が○曜日だったら1
  • それ以外で空欄。

に加えて

  • 左のセルが空欄じゃなかったら左のセル+1の値

なのでアレをこうして
C3セルに

=IF(B3<>"",B3 + 1,IF(WEEKDAY(DATE($A$1,$C$1,1))=2,1,""))

を入れてH3までコピーするとB3が自動的に変わると思うのでそれを修正する
D3~H3

=IF(C3<>"",C3 + 1,IF(WEEKDAY(DATE($A$1,$C$1,1))=3,1,""))	
=IF(D3<>"",D3 + 1,IF(WEEKDAY(DATE($A$1,$C$1,1))=4,1,""))	
=IF(E3<>"",E3 + 1,IF(WEEKDAY(DATE($A$1,$C$1,1))=5,1,""))	
=IF(F3<>"",F3 + 1,IF(WEEKDAY(DATE($A$1,$C$1,1))=6,1,""))	
=IF(G3<>"",G3 + 1,IF(WEEKDAY(DATE($A$1,$C$1,1))=7,1,""))

B4~H6

f:id:elve:20180212234900p:plain
オレンジのセルは前の週の土曜日に+1
黄色のセルは左のセルに+1
の数式を入れる

B7~

f:id:elve:20180212235236p:plain
最終日が入ってくる週。
まず、そこに入る数字はオレンジは前の週の土曜日に+1、黄色のセルは左のセルに+1

  • DATE($A$1,$C$1,ここに入れる)で月が変わっていたら空欄
  • 変わってなかったらその数字

加えて

  • 前の値が空欄だったら空欄

って条件になるので
B7~H7

=IF(MONTH(DATE($A$1,$C$1,H6+1))<>$C$1,"",H6+1)	
=IF(B7="","",IF(MONTH(DATE($A$1,$C$1,B7+1))<>$C$1,"",B7+1))	
=IF(C7="","",IF(MONTH(DATE($A$1,$C$1,C7+1))<>$C$1,"",C7+1))	
=IF(D7="","",IF(MONTH(DATE($A$1,$C$1,D7+1))<>$C$1,"",D7+1))	
=IF(E7="","",IF(MONTH(DATE($A$1,$C$1,E7+1))<>$C$1,"",E7+1))	
=IF(F7="","",IF(MONTH(DATE($A$1,$C$1,F7+1))<>$C$1,"",F7+1))	
=IF(G7="","",IF(MONTH(DATE($A$1,$C$1,G7+1))<>$C$1,"",G7+1))

B8~H8

=IF(H7="","",IF(MONTH(DATE($A$1,$C$1,H7+1))<>$C$1,"",H7+1))	
=IF(B8="","",IF(MONTH(DATE($A$1,$C$1,B8+1))<>$C$1,"",B8+1))	
=IF(C8="","",IF(MONTH(DATE($A$1,$C$1,C8+1))<>$C$1,"",C8+1))	
=IF(D8="","",IF(MONTH(DATE($A$1,$C$1,D8+1))<>$C$1,"",D8+1))	
=IF(E8="","",IF(MONTH(DATE($A$1,$C$1,E8+1))<>$C$1,"",E8+1))	
=IF(F8="","",IF(MONTH(DATE($A$1,$C$1,F8+1))<>$C$1,"",F8+1))	
=IF(G8="","",IF(MONTH(DATE($A$1,$C$1,G8+1))<>$C$1,"",G8+1))

f:id:elve:20180213000214p:plain
C1を12に変えて、土日のフォントの色を変えて
f:id:elve:20180213000658p:plain

祝日対応は別でリスト作るしか方法知らないんだよなぁ~