アルバイトや少人数の店のシフト表は、月が変わるたびに日付と曜日を打ち直すのが面倒です。最初の日付を1つ入れるだけで残りが自動で並ぶ形にして、各日の人数が足りているかも式で確かめられるようにします。
使う表の例です。A列に名前、B〜H列に日付(1週間分)が並び、5〜7行目に佐藤・鈴木・田中さんの「早」「遅」「休」を入れます。3行目が日付、4行目が曜日です。
■ 日付を自動で並べる
B1に月の最初の日(例:2026/11/1)を入れ、3行目に次の式を入れます。
B3:=$B$1+0 C3:=$B$1+1 D3:=$B$1+2 …(右へ+1ずつ)
試した結果:B3=11/1、C3=11/2、D3=11/3…
B1を書き換えるだけで、全部の日付が新しい月に変わります。
■ 曜日を自動で出す
4行目に、3行目の日付から曜日を取り出します。
=TEXT(B3,"aaa")
試した結果:B4=日、C4=月、D4=火…(2026/11/1は日曜日)
「aaa」は「月」「火」の1文字表示です。「aaaa」にすると「月曜日」と出ます。土日に色を付けたい場合は WEEKDAY 関数と条件付き書式を使います。
■ 各日の早番・遅番の人数を数える
9行目に早番、10行目に遅番の人数を出します。B列の早番は次の式です。
=COUNTIF(B5:B7,"早")
試した結果:B9=1(11/1の早番は佐藤さん)
遅番は "早" を "遅" に替えた式を10行目に入れます。右へコピーすれば、全日分が出ます。
試した結果:D10=0(11/3は遅番が誰もいない日)
■ 一人あたりの出勤日数を数える
J列に、休み以外のセルの数を出します。
=COUNTA(B5:H5)-COUNTIF(B5:H5,"休")
試した結果:J5=4(佐藤さん)、J6=5、J7=5
空欄は数えず、入力されたセルの数から「休」を引いています。
■ 人が足りない日を数える
早番が0人の日の数は、次の式です。
=COUNTIF(B9:H9,0)
試した結果:0
遅番も同様にできます(D10は0なので、遅番の0人の日は1日と出ます)。
■ 土日だけの人数を合計する
=SUMPRODUCT((WEEKDAY(B3:H3,2)>=6)*B9:H9)
試した結果:2(11/1の日曜と11/7の土曜の早番を合計)
WEEKDAY の2番目の「2」は、月曜を1として数える指定で、土曜が6、日曜が7になります。
■ うまくいかないとき
・曜日が「###」や数字になる:3行目のセルの表示形式が日付になっているかを見ます。4行目の式の "aaa" は半角の小文字です。
・人数が0のまま:シフトの文字(早・遅・休)に空白や全角半角の違いがないかを見ます。「早」と「早 」(空白つき)は別の文字として扱われます。
・日付が「45962」のような数字になる:セルの表示形式を「日付」に変えます。
月をまたぐ長い表や、希望休の集計、人数が足りない日を自動で色付けする形に整えたいときは、専用の調整サービスもあります。