メインコンテンツへスキップ
約12分で読めます

エクセルのシフト表を職員別に印刷する方法|元表から一人分を取り出す式とA4設定

既存のエクセル表から職員IDで一人分のシフトを取り出し、A4へ印刷するガイド

エクセルのシフト表を職員別に印刷するには、既存の月間表を残し、同じブックに「個人用」シートを追加します。職員IDで一人分の日付・曜日・勤務を縦に取り出し、個人用シートのA1:C44だけをA4で出力する方法です。

同姓同名の職員がいる場合も、氏名ではなく一意のIDで対象者を指定します。以下のセル対応表と8個の数式を使い、未登録・重複ID、勤務の未入力、月末の日付を確認してから印刷へ進めましょう。

操作説明はWindows版のデスクトップExcelを想定しています。公開情報の確認日は2026-10-03時点で、セル配置・数式の組み合わせは本稿独自の作例です。

元表の位置と、職員IDを確認する

シフト管理では、勤務を修正する元表と、職員へ渡す個人用の表を分けておくと、修正先が明確になります。まず既存ブックの控えを保存し、元表のシート名とセル位置を確認してください。

この作例のセル配置と勤務区分

以下は、氏名・勤務時間ともに架空の説明例です。必要人数、休憩の配置、勤務配置の適法性を評価したものではありません。

元表のシート名を「原表」とし、次の位置に情報があるものとして進めます。

情報原表の位置入力内容・個人用への対応
対象月B1実日付の2026/10/1。個人用B4へ
固定更新日時B22026/10/03 17:30。個人用B5へ
職員IDA5:A8個人用B2で指定するIDの検索対象
氏名B5:B8個人用B3へ
日付C4:AG410月1日〜31日の実日付。個人用A9:A39へ
勤務区分C5:AG8選んだ職員の勤務を個人用C9:C39へ

原表B2には、元表を更新した時点の日時を値として固定入力します。開くたびに日時が変わるNOW関数は使いません。

職員と勤務の入力例は次のとおりです。E001とE002は、どちらも「佐藤 花」ですが勤務が異なります。

原表の行職員ID氏名1日・C列2日・D列3日・E列31日・AG列
5E001佐藤 花早休日早
6E002佐藤 花遅早休休
7E003高橋 健日日日日
8E004田中 真休早遅遅

作例を再現する場合、4〜30日は各職員とも、4日から「早→遅→日→休」の順で繰り返し入力してください。これは抽出を確かめるための検算用データであり、勤務案の推奨例ではありません。勤務区分の時刻は、後述する印刷用の凡例に記載します。

ID・日付・勤務欄を数式で参照できる状態にする

IDはE001形式の半角英数字にそろえ、前後の空白を取り除きます。*・?・~を含むIDは、そのまま検索条件に使わないでください。MATCHにはワイルドカードの扱いがあるため、異なるID形式を使う場合は一致条件の調整が必要です。(Microsoft)

日付見出しは「1」「2」という日番号や文字列ではなく、年月日を持つ実日付にします。参照範囲にセル結合がある場合は先に整え、色だけで勤務を表している場合は「早」「休」などの値を入力してください。本稿の式は値を取り出すもので、セル色・書式・コメントをコピーする設計ではありません。

同姓同名のE001とE002を職員IDで区別し、元表から日付・曜日・勤務を縦へ取り出す架空例。
同姓同名のE001とE002を職員IDで区別し、元表から日付・曜日・勤務を縦へ取り出す架空例。

図を拡大して見る

個人用シートにIDと基本情報を置く

同じブックに「個人用」シートを作成します。A1に「個人別シフト表」、A2:A6に順番に「職員ID」「氏名」「対象月」「更新日時」「状態」と入力し、B2を対象者のID入力欄にしてください。

まずB2へ「E001」を入力し、以下の5式を指定セルへ貼り付けます。

B6:IDの状態

=IF($B$2="","ID未選択",IF(COUNTIF('原表'!$A$5:$A$8,$B$2)=0,"ID未登録",IF(COUNTIF('原表'!$A$5:$A$8,$B$2)=1,"表示可","ID重複")))

COUNTIFで指定IDに一致するセルを数え、0件・1件・複数件を分けます。(Microsoft)

この作例の「表示可」は、IDが1件だけ見つかったという意味です。勤務内容の完成や印刷の承認を表すものではありません。

E2:一致した職員の位置

=IF($B$6="表示可",MATCH($B$2,'原表'!$A$5:$A$8,0),"")

MATCHの第3引数を0にすると完全一致で検索し、範囲内の位置を返します。その位置をINDEXへ渡して値を参照します。(Microsoft)

作例ではE001が1、E002が2です。原表の行番号「5」「6」ではない点に注意してください。E2は計算用の補助セルで、印刷範囲には含めません。

B3:氏名

=IF($B$6="表示可",INDEX('原表'!$B$5:$B$8,$E$2),"")

B4:対象月

='原表'!B1

B5:更新日時

='原表'!B2

個人用B4の表示形式はyyyy年m月、B5はyyyy/mm/dd hh:mmに設定します。氏名や更新日時が途中で切れないよう、B列の幅も調整しましょう。

日付・曜日・勤務を縦に取り出す

個人用A8:C8に「日付」「曜日」「勤務」と入力します。続いてA9・B9・C9へ、残りの3式を貼り付けてください。

A9:原表の日付

=IF(INDEX('原表'!$C$4:$AG$4,1,ROW()-8)="","",INDEX('原表'!$C$4:$AG$4,1,ROW()-8))

B9:曜日

=IF(A9="","",CHOOSE(WEEKDAY(A9),"日","月","火","水","木","金","土"))

C9:指定した職員の勤務

=IF(OR($A9="",$B$6<>"表示可"),"",IF(INDEX('原表'!$C$5:$AG$8,$E$2,ROW()-8)="","未入力",INDEX('原表'!$C$5:$AG$8,$E$2,ROW()-8)))

A9:C9を選択し、39行目まで下へコピーします。A9:A39の表示形式はm/dに設定してください。

ROW()-8は、9行目では1、11行目では3、39行目では31になります。これによって原表のC列、E列、AG列を順番に参照する仕組みです。出力開始行を9行目以外へ移す場合は、引く数の8も変更しなければなりません。

この処理は、既存の勤務を取り出す「自動表示」です。勤務案の自動割当や勤務時間の自動集計ではありません。また、B4の対象月は表示用であり、その月の日付を生成したり、別月の日付を除外したりする条件にはなっていません。

同姓同名・空欄・0・月末の確認例

次の表は、架空データから求めた確認用の期待値です。Excel本体での動作確認や実際の印刷結果を示すものではありません。利用するブックでB2を切り替え、同じ内容になるか照合してください。

個人用の日付・曜日B2がE001の場合の勤務B2がE002の場合の勤務
10/1・木早遅
10/2・金休早
10/3・土日休
10/31・土早休

両者ともB3は「佐藤 花」ですが、勤務はIDごとに変わります。先頭3日だけでなく、39行目の10月31日まで確認しましょう。

続いて、原表の控えで次の条件を一つずつ試します。確認後は元の入力へ戻してください。

  • B2を空欄にする: B6は「ID未選択」。氏名と勤務は空欄になります。
  • B2にZ999を入力する: B6は「ID未登録」。氏名と勤務を出さず、印刷を中止します。
  • 原表のE001を2件にする: B6は「ID重複」。先に見つかった一人を印刷せず、IDを修正します。
  • E001を選び、原表E5を空欄にする: 個人用C11は「未入力」。休みには置き換えません。
  • 原表E5に数値の0を入れる: 個人用C11も0のままです。この作例の凡例にはないため、勤務区分を確認するまで出力を止めます。

IDが未登録・重複の場合でも、日付・曜日・対象月・更新日時は残る設計です。紙面が埋まっていることだけで印刷可と判断しないでください。

月末の確認では、原表B1と日付見出しを対象月へ変更し、存在しない日の見出しを空欄にします。

確認する対象月原表で空欄にする日付見出し個人用で空欄になる範囲
2026年11月・30日までAG4A39:C39
2027年2月・28日までAE4:AG4A37:C39
2028年2月・29日までAF4:AG4A38:C39

勤務欄だけ消して、不要な日付見出しを残さないことが重要です。日付が残れば、その行も取り出されます。対象月と日付見出しが一致しているかは、管理者が確認する必要があります。

職員IDが未登録・重複なら氏名と勤務を出さず、空欄の勤務は「未入力」として手動で印刷を中止する。
職員IDが未登録・重複なら氏名と勤務を出さず、空欄の勤務は「未入力」として手動で印刷を中止する。

図を拡大して見る

一人分だけをA4へ印刷する

個人用A40に「勤務凡例」と入力し、41〜44行へ次の内容を置きます。C41:C44は空欄で構いません。

行A列:勤務区分B列:意味
41早9:00〜17:00
42遅13:00〜21:00
43日10:00〜18:00
44休休み

実際の表へ移すときは、元表で使っている勤務区分と時刻に置き換えてください。区分だけでなく、意味が読める状態で出力します。

印刷設定は、次の順に行います。

  1. 「個人用」だけを選ぶ。 複数のシートをまとめて選択した状態にしないでください。
  2. A1:C44を選び、印刷範囲に設定する。 既存の設定があれば[ページ レイアウト]→[印刷範囲]で一度クリアしてから設定します。印刷範囲はブックとともに保存できます。(Microsoft)
  3. 用紙をA4、向きを縦、横を1ページにする。 [ページ設定]で用紙・方向・拡大縮小を指定します。縦のページ数は、まず未指定または自動として確認してください。(Microsoft)
  4. [ファイル]→[印刷]で出力対象を確認する。 [アクティブなシートを印刷]を選び、印刷範囲を無視する設定にしません。[選択した部分を印刷]を使う場合は、選択範囲がA1:C44であることを確認します。ブック全体の印刷とは区別してください。(Microsoft)

縦も1ページにするのは、文字が読める場合だけです。小さすぎる場合は縦を自動へ戻し、複数ページで出力しましょう。その際は[印刷タイトル]の[タイトル行]を$1:$8に設定すると、ID・対象月・見出しを各ページへ載せられます。(Microsoft)

対象月・更新日時・他職員の情報をプレビューで見る

実際に使うプリンターやPDF出力先を選び、全ページのプレビューを確認します。確認対象は次の4点です。

  • B2のIDとB3の氏名が、渡す相手と一致している。
  • 対象月、固定更新日時、月末の日付、勤務凡例が読める。
  • 「未入力」、凡例外の値、数式エラーが残っていない。
  • 原表、補助E列、他職員の勤務、不要なヘッダー・フッターが出ていない。

B6が「表示可」でも、未入力や凡例外の値があれば印刷を中止してください。この数式はExcelの印刷操作自体を禁止するものではありません。 紙なら出力物、PDFなら保存したファイルも開き、配布前に対象者とページ内容を確かめます。

個人用A1:C44を印刷し、原表と補助E列を除外する。30日月と2月は元表の不要な日付列も空欄にする。
個人用A1:C44を印刷し、原表と補助E列を除外する。30日月と2月は元表の不要な日付列も空欄にする。

図を拡大して見る

元表を変更したときの更新と完成確認

勤務の変更は原表へ入力し、個人用の抽出結果を直接書き換えない運用にします。修正後は原表B2の固定更新日時も更新し、個人用の表示と元表を再照合してください。

職員が増減した場合は、各式にある次の3範囲を、同じ開始行・最終行にそろえます。

  • ID:A5:A8
  • 氏名:B5:B8
  • 勤務:C5:AG8

IDの範囲だけ広げると、見つかった位置と氏名・勤務の参照先が対応しなくなります。対象月の変更時は、B1だけでなく日付見出しと勤務欄も入れ替え、不要な月末列を確認しましょう。

自分の原表へ移す確認欄

式を貼り付ける前に、次の空欄へ実際の位置を書き込んでください。シート名と参照範囲を置き換えた後、同名職員・不正なID・空欄・月末の順に確認します。

確認項目作例自分のブックへの記入欄
元表のシート名原表[     ]
対象月/更新日時B1/B2[   ]/[   ]
ID範囲A5:A8[     ]
氏名範囲B5:B8[     ]
日付範囲C4:AG4[     ]
勤務範囲C5:AG8[     ]
出力する職員IDE001など[     ]
実プレビューの確認A4縦・横1ページ縦[ ]ページ/確認者[   ]

職員別印刷の完成条件は、IDが一意で、日付と勤務が元表に一致し、個人用A1:C44以外の情報が出ないことです。数式の確認だけで終えず、利用するExcel本体と出力先でプレビューまで確かめてください。

元になる勤務表の作成や希望・勤務条件の更新も繰り返しているなら、シフトラの提供範囲を確認できます。既存Excelから設定の下書きを取り込み、条件を反映した勤務案を作る機能があります。取り込みと帳票出力は対応形式と初期設定を確認し、職員別の抽出・対象者の照合・印刷確認は、この記事の手順として行ってください。

既存Excelでシフト表を更新している管理者へ

毎月の勤務案と、Excel帳票の更新をつなぐ。

シフトラは、既存Excelから設定の下書きを取り込み、希望・必要人数・勤務条件を反映した勤務案を作成します。確認・確定後の帳票出力は、対応形式と初期設定を確認したうえで使います。

  • 既存Excelから設定の下書きを取り込み
  • 希望・必要人数・勤務条件から勤務案を作成
  • 確認・確定した勤務を対応するExcel帳票へ出力

帳票形式と初期設定は事前に確認します。この記事の職員別抽出式や個人別PDFを自動提供する機能とは別です。

機能・料金・導入の流れを見る 資料を請求する
目次