[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シフト表から日毎の人員配置を自動で表示させたいです』(おの)
縦に日付、横に人の名前が入ったシフト表があります。
休みのところは休みと表示されて、出勤のところはその人の名前が表示されています。
毎日どの作業をするかの配置図が必要で、作業者の要望から、連続で同じ作業にならないようにしています。現在は手動で配置図を作っています。
ほとんどの作業は1日中同じことをします。
作業は10種類位ありますが、とりあえず3種類大変なものがあるので、それだけでも連続にならないように自動で割り振る方法が知りたいです。
条件は、
?@全員平等に大変な作業をまわしたいので、最後にその作業に入ったのが遠い人から優先で次に入るようにしたいです。
?Aもし前にやった日が同じくらい前なら、表の左側の人を優先で抽出したいです。
?Bまた、人数的に大丈夫なはずですが、もしも3日以上あかずにお馴染み作業に入ることになった場合は、セルを赤色にするなどして、視覚的に分かるようにしたいです。
この3つをやりたいですが、やり方がわかりません。
大変な作業は3種類(abcとします)あり、毎日、aは2名、bとcは1ずつ人員が必要です。
何日も考えていましたが、ヒントすらたどり着けていなくて、困っています。
ちなみに会社のパソコンによってはキングソフトが入っているようなので、キングソフトかもしれないです。
自分のパソコンにはエクセル2010が入ってます。
よろしくお願いいたします!
< 使用 Excel:Excel2010、使用 OS:unknown >
キングソフトでも実行させたいのだろうか? それとも自分のEXCELでだけ実行させるのだろうか?
(ねむねむ) 2019/01/21(月) 13:13
(1)レイアウトが分からないし (2)a、b、c以外は何人必要かも分からない (3)作業員の数はおおよそにも分からない (4)配置図を何日分作るのかも分からない
それじゃ考えにくいです。
レイアウトは以下のようなものかなと思いますが、そちらの状況を正確に伝えてください。
※後で、実はレイアウトがちょっと違ってまして、その場合はどうすればいいですか、 とか言う二度手間な遣り取りが起きないようにしてください。
<出勤表> 行 ____A____ __B__ __C__ __D__ __E__ __F__ __G__ 1 日付 西田 田中 佐藤 渡辺 浜田 小林 2 2019/1/21 西田 休み 佐藤 渡辺 浜田 小林 3 2019/1/22 西田 田中 佐藤 渡辺 休み 小林
<作業マスタ> 行 __A__ ____B____ 1 作業 所要人員 2 a 2 3 b 1 4 c 1 5 d ? 6 e ? 7 f ? 8 g ?
<配置図> これは全く不明。
現在は手書きでも、エクセルで処理したときはどう仕上げたいのか整理してから、 希望図をアップしてください。
(半平太) 2019/01/21(月) 15:14
配置図(図ではないんですが、いつもそう呼んでいたため紛らわしかったです。すみません。)は、
毎日前日の夜に掲示して、次の日の朝に作業者が確認するものです。
配置図例1
1/21
作業A(2名でやる)アさん、エさん
作業B オさん
作業C キさん
作業D 上の四人以外
配置図例2
1/22
作業A ウさん、タさん
作業B アさん
作業C チさん
作業D 上の四人以外
上みたいな感じのものを毎日掲示しています。
現在はエクセルで、シフトを作っています。
まず、休み希望の日を入力してから、それぞれの勤務日数と日々の出勤人数で考えてやっています。
(すこし脱線しますが、できればこちらも自動化したいです、、、
休み希望を入力したら自動でその人の出勤日数分出勤になって、且つ4連勤以上にならない、且つ日〜木は8か9人、金土と祝前日と月末のひとつ前の日(棚卸しのため)は9〜12人に、自動で割り振られると助かります。その中でも3名が得意な仕事があるので、その3名の休みは被らないようにしたいです。それを自動でやれると良いなと思っています。
やり方が思い付きません。。脱線はここまでです)
エクセルで作ったシフトから、配置図?のファイルに出勤の人の名前が出るようになっています。
配置図のファイルは、1日毎のタブで31タブになっています。
シフトから出勤の人の名前が出てきて、それをどの作業にいれるか、自分で考えて名前をいれています。
考えるといっても、いつも最初に書いた条件3つだけをルールとして守ってやっています。
配置図は、シフトがある分は全部つくっておけます。シフトの休み希望の締め切りが毎月5日なのでそれいこうにシフトが完成して、そしたら次の一ヶ月分の配置図もできるという風にしたいです。
シフトも配置図もルールは決めてあるので、悩む部分はないです。
でも自動にするやり方が分からないんです。
どうぞよろしくお願いします。
(おの) 2019/01/21(月) 17:09
難しい・・
私の能力ではお手上げです。
他の回答者のレスをお待ちください。 m(__)m
(半平太) 2019/01/21(月) 19:59
誰の食指も動かなかったですかぁ・・
まぁ、情報が不足気味なので、もう少し補足してもらえるとレスが付くかもです。
1.職員が毎月増減するようですけど、月中だって生じる可能性がありますよね。 すると月初で作成した予定表が使えなくなりますが、その時の対応はどうするんですか?
2.前月まで誰が何の作業をしたことがあるか(累積)データが必要だと思うのですが、 そのデータはどこにどんな形で存在しているんですか?
3.サンプルでは作業A〜Dしか示されていないですが、全部で10種類くらいあるんですよね? それらは毎日やらなくていいんですか?
全部やらないでいい場合、予定当日にやるべき作業が何なのか、何を見ると分かるんですか?
4.所要人数について、ABCは示されましたが、その他の作業はそれぞれ何人必要なんですか?
>考えるといっても、いつも最初に書いた条件3つだけをルールとして守ってやっています。
5.そうは言っても、「3名が得意な仕事がある」訳ですから、その3人は得意な仕事を割り振る必要があるんじゃないですか?
(半平太) 2019/01/25(金) 11:32
この種の問題は、「ナーススケジューリング問題」と呼ばれているようで、 0-1整数最適化問題とも言えるし、組み合わせ最適化問題と見ることもできるらしい。 現在も研究されているテーマらしく、成書もあります。 ですから、VBAで簡単にできるだろうといった感じで要望をされるのは、 現実的ではないと思われます。
手っ取り早いのは、最適化の汎用ソルバーを使うことらしい。 最も高性能なのは、Gurubi(有償)、その他商用ではCPLEXとか言ったのが有名らしい。 また、SCIPというのはもとはアカデミックを除き有償だったが、 今は無償になっている気配もある。
残念ながらExcelのソルバーは変数の数の上限が300であり、使えない。
pythonのPuLPというパーケージから、CBCという最適化ソルバーが使えるらしいと分かったので、 今日、結構な時間を費やして、この間の [[20190102084214]] 『ランダムに抽出』(前)を題材に PuLPにトライしてみました。
ただし、pandasのdataframe回りにバグがあるようで、 データの設定ができるまでに、時間を費やしてしまった。 やっと解をえることができました。3,4秒程度で返ってきます。
今回のテーマにもたぶん原理的には対応できるのだろうが、 ユーザーインターフェイス回りに工夫が必要な感じがします。
(γ) 2019/01/26(土) 23:41
> 2.前月まで誰が何の作業をしたことがあるか(累積)データが必要だと思うのですが、 > そのデータはどこにどんな形で存在しているんですか?
その部分ですが、過去の実績は、前月分だけ見れば十分ですよね。(多分)
予定表の体裁を以下のようにマクロで作ることにすれば (つまり「出勤」を、「実際に割振った作業名」に置き換えた表)
次の月はそのまま過去実績データとして使えるので、特に集計しておいたりする手間はなくなると思います。
名01さん 名02さん 名03さん 名04さん 名05さん 名06さん 2018/12/21 作業A 休み 作業A 作業B 作業C 出勤 2018/12/22 作業B 休み 作業C 作業A 作業A 休み 2018/12/23 作業C 出勤 作業A 作業B 出勤 作業A
しかし、ちょっとみにくいですねぇ。 こんな体裁の方がいいかも知れないですが・・
名01さん 名02さん 名03さん 名04さん 名05さん 名06さん 2018/12/21 作業A 作業A 作業B 作業C 2018/12/22 作業B 作業C 作業A 作業A 2018/12/23 作業C 作業A 作業B 作業A
(半平太) 2019/01/27(日) 09:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.