• 公開日:

エクセルの勤務表を自動作成して休み希望を反映する方法

勤務表作成は多くの企業で必要な業務ですが、手間がかかりミスも発生しやすいものです。そこで、エクセルを活用して勤務表を自動作成する方法が便利です。

本記事では、エクセルの便利な機能を使って、従業員の休み希望を反映させた勤務表を簡単に作成する方法を解説します。

効率的な勤務表作成を目指す方は、ぜひご覧ください。

エクセルの勤務表を自動作成して休み希望を反映する方法

エクセルの勤務表を自動作成して、休み希望を反映する方法をご紹介します。

勤務シフトの例

勤務体系が「A,B,C」の3形態ある上記の勤務表に、社員の休み希望を自動反映する場合を例にご説明します。

休暇希望日入力欄を作成する

まず、以下の操作で休暇希望日入力欄を作成します。

休み希望入力欄を2つ作成する

①任意のセル(例:AI4:AM18)に「休み希望日」の表を作成します。

②任意のセル(例:AO4:AS18)に「休暇希望日入力欄」の表を作成します。

「休暇希望日入力欄」の表の入力し、「休み希望日」の表で勤務表に紐づけます。

ダミーの数字を入力する

「休暇希望日入力欄」にダミーの数字をいくつか入力します。

これは、関数を入力した際に勤務表に正しく反映されるか試すために入力します。

関数を入力する

「休み希望日」の表AI6セルに、「=IF(AO7="","",DATE($A$1,$A$2,AO7))」と入力し、Enterを押します。

DATE関数で勤務表の「年($A$1)」、「月($A$2)」、「休暇希望日入力欄」で入力した「日(AO7)」を抽出します。

DATE関数とは「年」「月」「日」を引数にして日付を作成する関数です。

ExcelのDATE関数の使い方|日付をシリアル値に変換する

IF関数で、「休暇希望日入力欄」のセルが空欄の場合は空欄(AO7="","",)、それ以外の場合はDATE関数で抽出した日付を返します。

IF関数は論理式の結果(真また偽)に応じて、指定された値を返す関数で、書式は「=IF(論理式,値が真の場合,[値が偽の場合])」となります。

ExcelのIF関数の使い方|論理式の条件(IF文)によって処理を分岐

表示形式を選択する

関数を入力したAI6に、セル幅が足りない場合に出る「###」エラーが表示されます。以下の操作で表示形式を変更します。

AI6セル、「ホーム」タブ、③「数値」の「表示形式」の順に選択します。

OKボタンを押す

「セルの書式設定」ダイアログボックスが表示されます。

「ユーザー定義」を選択し、②「種類」の入力フォームに「d」と入力します。

「OK」ボタンを押します。

オートフィル操作を行う

AI6セルのエラーが消え、日付表示にすることができました。

①関数を入力したセル(例:AI6)を選択します。

セルの右下にマウスオーバーし、+マークを表示させて下方向にドラッグします。

オートフィル操作を行う

列が選択されたままセルの右下にマウスオーバーし、+マークを表示させて右方向にドラッグします。

表示形式も関数も反映された

「休み希望日」の表に、関数と表示形式の設定を反映させることができました。

「休暇希望日入力欄」に入力した数値が、「休み希望日」の表に反映されます。

休暇希望日入力欄と勤務表を紐づけする

以下の操作で、休暇希望日入力欄と勤務表を紐づけます。

関数を入力する

勤務表のC6セルに、「=IF(C$1="","",IF(COUNTIF($AI6:$AM6,C$1)=1,"休",SWITCH(RANDBETWEEN(1,3),1,"A",2,"B",3,"C")))」と入力し、Enterを押します。

数式については、以下の「休暇希望日入力欄と勤務表を紐づけする数式について」セクションで詳しくご説明します。

オートフィル操作を行う

①関数を入力したセル(例:C6)を選択します。

セルの右下にマウスオーバーし、+マークを表示させて右方向にドラッグします。

オートフィル操作を行う

行が選択されたままセルの右下にマウスオーバーし、+マークを表示させて下方向にドラッグします。

表に休み希望の自動反映が設定された

休み希望日を勤務表に反映させることができました。

非表示を選択する

「休み希望日」の表は以下の操作で非表示にしておくと「休暇希望日入力欄」の表と混同せず、見やすくなります。

AH~AM列を選択し、右クリックします。

「非表示」を選択します。

休み希望が自動反映されるシフトが完成した

「休み希望日」の表を非表示にすることができました。

「休暇希望入力欄」のそれぞれの社員に該当する行に数字を入力すれば、勤務表に反映され、自動でシフトを作成してくれます。

休暇希望日入力欄と勤務表を紐づけする数式について

数式について

上記「休暇希望日入力欄と勤務表を紐づけする」セクションで使用した「=IF(C$1="","",IF(COUNTIF($AI6:$AM6,C$1)=1,"休",SWITCH(RANDBETWEEN(1,3),1,"A",2,"B",3,"C")))」という数式についてご説明します。

RANDBETWEEN関数で1~3の乱数を発生させ(RANDBETWEEN(1,3))、乱数が「1」の場合は「A」、「2」は「B」、「3」は「C」を表示するように設定しています(SWITCH(RANDBETWEEN(1,3),1,"A",2,"B",3,"C"))。

RANDBETWEEN関数は範囲を限定して乱数を発生させる関数で、書式は「=RANDBETWEEN(最小値,最大値)」です。

SWITCH関数は対象となるデータを複数の条件で判定し、それぞれの条件ごとに設定した結果を表示する関数です。書式は「「=SWITCH(式,値1,結果1,[既定値または値2,結果2],…)」」です。

ExcelのSWITCH関数の使い方|条件ごとに結果を分ける

COUNTIF関数で「休み希望日」の表の日付から、勤務表の「日(C$1)」がある場合の個数をカウントし、それが「=1」、つまり「休み希望日」の日付に該当した場合は「休」と表示させます。

COUNTIF関数は指定した範囲の中で1つの検索条件に一致するセルがいくつあるかを求める関数で、書式は「=COUNTIF(範囲, 検索条件)」です。

ExcelのCOUNTIF関数の使い方|条件に一致するデータの個数表示

IF関数で勤務表の「日」が空欄の場合は空欄を指定することで(=IF(C$1="","",)、30日までしかない月に対応しています。