『A:3名 B:3名ずつの1か月のシフトについて』(中村)
人数は全部で15名
1日あたりのシフトが
Aグループ 3名
Bグループ 3名の割り振りになります
たとえば
7/1 Aグループ 1・4・7 Bグループ 5・10・14
7/2 Aグループ 1・3・8 Bグループ 9・11・15
7/3 Aグループ 5・6・12 Bグループ 2・13・14
7/4 Aグループ 2・9・10 Bグループ 3・4・8
以下7/31まで毎日
規則性としては、
・AグループとBグループは必ず違うメンバー
・最終的に1〜15までの人たちの1か月のシフトの出席日数が不公平にならな いこと
・なるべくなら毎回同じメンバー同士にならないこと
・7/1と7/2のように連続で1がシフトに入っていてもOK
このような場合、どんな関数を使えば良いのでしょうか。
よろしくお願いします。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
手順
1.メンバーリストの準備
シートのA1:A15に15名のメンバーの名前または番号を入力します。
シートのB1:B31に7月1日から7月31日までの日付を入力します。
2.ランダムな並び替え
シートのC1:C15に=RAND()を入力し、15名分コピーします。これはメンバーのランダムな順序を生成します。
シートのD1:D15に次の式を入力し、ランダムな順序でメンバーを並べ替えます。
=INDEX($A$1:$A$15, RANK($C1, $C$1:$C$15))
3.シフト表の作成
E1:G31にAグループのシフト、H1:J31にBグループのシフトを入力する場所を確保します。
シフトの割り当て
次に、Excel関数を使用して自動的にシフトを割り当てる手順を説明します。
Aグループのシフト割り当て
E1に次の式を入力し、E1:E31にコピーします。
=INDEX($D$1:$D$15, MOD(ROW()-2, 15)+1)
F1に次の式を入力し、F1:F31にコピーします。
=INDEX($D$1:$D$15, MOD(ROW()+3, 15)+1)
G1に次の式を入力し、G1:G31にコピーします。
=INDEX($D$1:$D$15, MOD(ROW()+8, 15)+1)
Bグループのシフト割り当て
H1に次の式を入力し、H1:H31にコピーします。
=INDEX($D$1:$D$15, MOD(ROW()+1, 15)+1)
I1に次の式を入力し、I1:I31にコピーします。
=INDEX($D$1:$D$15, MOD(ROW()+6, 15)+1)
J1に次の式を入力し、J1:J31にコピーします。
=INDEX($D$1:$D$15, MOD(ROW()+11, 15)+1)
条件はなんとなくクリアできてるので、あとは目で見て微調整ぐらいですかねー。
(サーブ) 2024/07/17(水) 16:31:54
>条件はなんとなくクリアできてるので、あとは目で見て微調整ぐらいですかねー。
ChatGPTの回答は、この条件を完全に無視しているように見えますが、問題なかったですか? ↓ >・なるべくなら毎回同じメンバー同士にならないこと
(半平太) 2024/07/17(水) 17:37:08
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.