[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『勤務割表の作成方法について教えてください』(新人管理担当)
4月の定期異動により初めての部署に異動して業務を覚えることに必死ですが、担当業務意外に係員の勤務割表を作ることを命じられました。
前任者は手作業で勤務割表を作成しているとのことですが、かなり時間がかかるのでエクセルを使用して簡単に勤務割表を作成できないか考えてるのですが、条件がいろいろあり自分で作成することができません。
皆さんのお知恵をお借りして本来業務以外のことに時間を割かないで済む方法を見つけれればと思っています。
よろしくお願いします。
条件
・勤務員は12名(A〜Lとします)です
・係長が1名(A)、副係長は3名(B〜D)、係員は8名(E〜L)です。
・12名を6名と6名の2班(甲班、乙班)に分けます。
・係長は常に甲班に含み、副係長のうち少なくとも1名は乙班に含みます
・1ヶ月の勤務日数は9〜11日です
・係長を除き、全員が年間を通して甲班と乙班の勤務がなるべく均等になるようします
・一年を通じて全ての人と均等に勤務するようにしたい(特に管理職は特定の係員と勤務が偏らないようにしたい)
作成したい表は下記のような表です
○月△日(火) 甲班 A C E G I K
乙班 B D F H J L
○月▲日(金) 甲班 A B F G J K
乙班 C D E H I L
・ ・
・ ・
・ ・
✖月●日(月) 甲班 A C E F G H
乙班 D B I J K L
どうか宜しくお願いします
< 使用 Excel:Excel2007、使用 OS:Windows7 >
残念ながらその数式をどのように活用すればいいのか、初心者の私にはわかりません。
可能でしたらもう少し解りやすくご教授願えませんでしょうか?
宜しくお願いします。
(新人管理担当) 2014/04/23(水) 13:20
上記は se-9 さんを騙った、最近出没している掲示板荒らしのものと思われます。 (だんだん悪質化してきましたね・・・。)
無視して、他の方の回答をお待ちください。 (Mook) 2014/04/23(水) 13:37
abcd
abdc
acbd
acdb
adbc
adca
次に、残りの8人はランダムで割り振るのが、簡単で平等と思われます。
シートにActiveXのボタンを貼り、以下のマクロを貼り付けてください。
Private Sub CommandButton1_Click() Dim i As Long Dim j As Long Dim iSt As Long Dim jMax As Long Dim iw As Long Dim cw As String Dim cName() As Variant
cName = Array("Eさん", "Fさん", "Gさん", "Hさん", "Iさん", "Jさん", "Kさん", "Lさん")
Randomize jMax = UBound(cName) iSt = Cells(Rows.Count, "E").End(xlUp).Row If iSt <> 1 Then iSt = iSt + 1 End If
For i = iSt To Cells(Rows.Count, "C").End(xlUp).Row Step 2 For j = 0 To jMax iw = Fix(Rnd() * (jMax + 1)) cw = cName(j) cName(j) = cName(iw) cName(iw) = cw Next j For j = 0 To jMax Cells(i + Fix(j / ((jMax + 1) / 2)), j Mod (Fix((jMax + 2) / 2)) + 5).Value = cName(j) Next j Next i End Sub (???) 2014/04/23(水) 18:15
条件が矛盾しますので、どこまでを許容範囲とするかを記載下さい >・係長は常に甲班に含み、副係長のうち少なくとも1名は乙班に含みます A BCD AB CD AC BD AD BC ABC D ABD C ACD B 係長、副係長の組み合わせでも 「全ての人と均等に勤務」を満たせません
>・係長を除き、全員が年間を通して甲班と乙班の勤務がなるべく均等になるようします 同じ回数という意味ではなく 同じ割合と言うことでいいですか? (この場合、係長と同じになる回数は少なくなります) (By) 2014/04/23(水) 20:00
abcd
acbd
adbc
(???) 2014/04/24(木) 08:45
(By)さんのご指摘ですが、各副係長及び各係員それぞれが年間を通じて甲班と乙班を勤務する割合を均等にするようにしたい という意味です。
最初の条件説明が解りにくくてすいません。
(???)さんの作成(案)は、管理職4人と係員8人を分けて班編成を作成するという案ですね。
そうすると、管理職4人分の班編成と係員8人分の班編成を組み合わせて作成すれば勤務編成が簡単になりますね。
ひと月の勤務日数は9〜11日なので、組み合わせた1日分の編成を9〜11段重ねれば一瞬でひと月分の勤務編成表ができることになりますね。
エクセル超初心者なのでまずは帰宅したら「ActiveXのボタンを貼り、以下のマクロを貼り付けてください」から試してみます。
自分で調べて格闘してみますが、またご教授をお願いします。
(新人管理担当) 2014/04/25(金) 16:40
別案の提案です。
(こんなのでいいならそもそも質問されないかな、と思いつつ。)
1)前任のかたが作成された勤務割表を手に入れ、
2)日付だけ書き換える。
> 副係長のうち少なくとも1名は乙班に含みます
1名の日もあれば3名の日もある。常に常に同じ人数であってはならない、
と解釈しましたが、そうでもないのでしょうか。
(佳) 2014/04/25(金) 17:38
こんな感じでいかが
A B C D E F G H I J K L M N O P Q R S 1 い う え お か き く け こ さ し 2 あ 3
A2に係長の氏名 I1:K1に副係長の氏名を入力 L1:S1に係員8人の氏名を入力
I2に =RAND() と入力 I2:S2 にコピー
I3に =RANK(I2,$I2:$K2) と入力 I2:K2 にコピー L3に =RANK(L2,$L2:$S2) と入力 L2:S2 にコピー
H2に =LOOKUP(INT(RAND()*7),{0,1,4},{0,1,2})
B2に =IF(COLUMN(A1)>$H2,INDEX($L$1:$S$1,MATCH(COLUMN(A1)-$H2,$L3:$S3,0)),INDEX($I$1:$K$1,MATCH(COLUMN(A1),$I3:$K3,0))) と入力 B2:F2 にコピー A3に =IF($H2+COLUMN(A1)>3,INDEX($L$1:$S$1,MATCH(COLUMN(C1),$L3:$S3,0)),INDEX($I$1:$K$1,MATCH(COLUMN(A1)+$H2,$I3:$K3,))) と入力 A3:F3 にコピー
(By) 2014/04/25(金) 21:15
大変厚かましくて恐縮なのですが、2点ほど質問させてください。
まず、1点目なのですが、マクロで乱数を発生させると11段すべての乱数が変わり、人員が組み直されます。これを、例えば3段目だけ乱数を再発生させて3段目だけ人員を組み直すことはできるのでしょうか(例えば、AさんがBさんと1回も同じ班にならないか状況になってないかチェックしています。11段全部を再度組み直すと全員の組み合わせパターンを見直さなければならなくなってしまうので、個別に任意の1段だけ乱数を再発生させることができたら都合がいいと・・・)。
2点目ですが、各人員の甲班乙班の勤務日数を毎月集計して偏りがないかチェックする表も合わせて作っています(甲班と乙班でかなり勤務に差があるので不平がでないようにするためです)。手作業で回数を数えていけばいいのですが、こんなに便利なものを教えて頂けたのでついでと言っては大変失礼ですが、この人員編成表から自動で各人員の甲乙の回数を数えることができたらなぁ と甘い期待が湧いてしまいました。
何かいい案がありましたら宜しくお願いします。
(新人管理担当) 2014/04/26(土) 00:01
係長と副係長合わせて4名いますので、原則的には2名ずつにしたいですね。
通常の業務をこなす分には1:3でも問題ないのですが、トラブルが発生した場合にどうしても責任者の判断が必要になりますから。
別にベテラン係員も多くいますので係員だけで対処可能なのですが、やはりそこは組織なので誰が決断して指示をしたのか明確にする必要はでてきますね
(新人管理担当) 2014/04/26(土) 00:14
条件の優先順位、許容範囲が小出しに出されますね(条件も変わってきているようですね)
>係長と副係長合わせて4名いますので、原則的には2名ずつにしたいですね。 H2に =LOOKUP(INT(RAND()*7),{0,1,4},{0,1,2})を H2に 1を入力でいいかな(他の式も簡単にできますが省略)
>大変厚かましくて恐縮なのですが、2点ほど質問させてください 1点目の質問について すべて乱数処理するのではなく (11段分一括で処理するのでなく、1段ずつ処理) *範囲A2:F3を選択 コピー 2段目に 形式を選択して貼り付け(値にチェック) この時点で、A2:F3の値も変更されますので *範囲A2:F3を選択 コピー 形式を選択して貼り付け(値にチェック)を11段繰り返す 上記考え方を利用して、個別に任意の1段のみ変更も可能ではないでしょうか
2点目の質問について
A B C D E F G H I J K L M N O P Q R S 1 あ い う え お か き く け こ さ し 2 あ い き か こ し 3 う え お け さ く 4 5 あ う い お し か 6 え さ く き こ け 7 8 あ い う き け お 9 え し こ く か さ 10 11 あ え し け お さ 12 い う こ く き か
甲班の回数 H2=SUMPRODUCT(($A$2:$F$33=H1)*(MOD(ROW($A$2:$A$33),3)=2)) H2:S2にコピー
(By) 2014/04/26(土) 09:04
返信ありがとうございます
最初にご相談した優先順位及び許容範囲が小出しになってすいません。
複雑になると無理ではないか勝手に判断し、わかり易い条件をお示しし後から手作業で修正すればいいかと思っていました。
今日は仕事で明日の朝まで勤務しているので、明日帰宅してからチャレンジしてみようかと思います。
早速のご回答本当にありがとうございます。
(新人管理担当) 2014/04/26(土) 14:06
5月分の作成が完了しました。
お陰で作業手順が大幅に改善されました。
いろいろありがとうございました
(新人管理担当) 2014/04/30(水) 23:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.