ExcelVBAで勤務表を作ろう
■ このスレッドは過去ログ倉庫に格納されています
>>98
>「ラフな割り当て案」=【勤務表条件】を100%満たしていない案ということだよね。
まあそのとおりなんで、最初から条件を全部適用するのは諦めて、実装しやすいところから出来ればいいんだが、という趣旨。
機能分離が簡単ではないのは承知。 すでに、この問題についてスレを読み、考え、書き込み、コードを書いた人ののべ工数は300人時(=2人月)くらいいってそう。 色々な意見ありがとうございます
>>99
これまでにツールを使ったことは無いです
単純に探してみて販売しているものがほとんどだったり、無料のものでも応用が利かない(自分の所では使用できない)ものだったからです >>101
面白い現象だよな。
直接のメリットは何もないはずなのに。
ジェーン・マゴニガル 「ゲームで築くより良い世界」
ttp://www.ted.com/talks/lang/ja/jane_mcgonigal_gaming_can_make_a_better_world.html
>World of Warcraftのようなゲームはプレーヤーに世界を救う手段を与え、ヒーローの行動様式を
身につけるよう動機づけます。もしこのゲーマーの力を、現実の世界の問題を解決するために使えたと
したらどうでしょう? ジェーン・マゴニガルはそれは可能だと言い、その方法を説明しています。
>>102
>無料のものでも応用が利かない
>>91 のどれが出来なかった? >>97
>これまで作った勤務表は、全て【勤務表条件】を満たしているかどうか
今までで年に3,4回は満たせてない月だと思います
夜勤、明け、休みのあとにまた夜勤と続いてしまうことがありました
>ヶ月分の勤務表を作るのに必要な時間はどれくらいなのか
そのときの希望休の数や、うまくはまるかどうかで変わってきますが
大体8〜10時間(数時間*数日)かと思います
>従業員の満足度は、【勤務表条件】を満たしてさえいれば、どのようなものでも最高なのか
特に条件を満たしていなくても(夜勤が続いても)さほど文句はありません
逆に日勤(早番)が3日とか4日続いたあとの夜勤だったりすると少し不満(文句はないけど)があったりします
最高の出来、というのは今までなかなか無いと思います
>次に、どうやって勤務表を作ってきたのか、その手順をざっくりと説明(200〜400文字程度)。
1.まず希望休、希望勤務を入れる(コレは固定)
2.前の月の夜勤を見ながら、夜勤を適当に入れていく
3.日勤の2番を夜勤に気をつけながら入れていく
4.早番を↑に気をつけながら入れていく
(これ以降日勤はとりあえず空白を入れる。番号を振り分けるでなく、日勤としておく)
5.行事など人の多く必要なところを入れる
6.それ以外の日に日勤を割り振る
7.この時点でおかしいところや組めないところ、偏っているところがあれば
一部入れ替える、ダメそうなら全体にごっそり替える
8.日勤の番号を偏りないように入れていく
9.最終確認。
希望勤務を確認→夜勤、早番、日勤の回数を確認→一人一人偏りを確認
→日勤の番号の偏りを確認
10.完成
という手順です
>>104
そもそも夜勤がなかったり、希望の勤務が入れれなかったり、可能・不可能な勤務が指定できないなどの理由からです まぁベタだがPCにのみできるアルゴリズム。
まず、どの状態が良いか、悪いかという評価式を用意する。
たとえば、連勤=-10、などなど。
後は、
1.絶対動かせない人をまず配置する。
2.比較的動かせない人を、その枠にそって(たとえば火・金は勤務可であれば、どちらかに)あてずっぽに配置する。
3.そっから、あてずっぽうで余った人を置いていく。
それを、2を数10回、さらにそれに対して3を数10回ずつやる。
その中で、一番スコアの高かった表が、比較的よいシフト表な。
明らかに悪い表しか出てこなかったら、スコアの評価式変えろ。
ファジィ()。
VISTA, excel2000,モニター24
左上に貼りついている表をずらしてなんとかしたいが表をずらせない
マクロ、怪しいボタン、関数、リンクすべて消してくれ
セルの結合、色、多すぎる枠の太い線みんなやめてくれ
278さんがVBAの達人と理解したから再度アップ頼む
ボタンは、コントロールボックスのコマンドボタンを使って
プロシージャコマンドボタンクリックからスタートすると本に書いてあった
>>109
アルゴリズムはExcelでも出てくるものなんですね…
色々調べてみましたがかなり難しそうなので
教えていただいた手順を参考に試行錯誤を試してみたいと思います 乱数を使って条件にあうものを設定していこうとか、順に組み合わせていってチェック
しようとかする方法は無理だから。
勤務の種類が10個で、従業員が10人いるとすると、1日分の組み合わせは10^10=10億通り。
これがどれくらいのものかというと、1日が10万秒だとして、1秒に1万通りのチェックが
できれば1日で終わる規模。
次の1日分を決めようとすると、さらに10億倍になる。つまり10億日=273万年。
30日分だと10^300通り。単純な順列組み合わせだと無理。
計算のスピードが10^4になっても、条件によって場合の数が10^150位にへったとしても、
10^20でさえ無理なんだから、もうとても無理。 >>113
再帰や絞り込みを使っても無理だって。
10人30日で300マスあるものの200マスが一意に決まって、残りの勤務の候補が3個に絞られたとしても、
3^100でだいたい10^46通り。
順に試していく方式だと、大体10^10位のオーダーにならないと無理。
なので、>>107のやり方をサポートする機能を実装するか、GA等を使って劇的に計算量を減らすか、
あるいは「ラフな割り当て案」を作れるとしたら、それを作るロジックを考えるのどれかしかないと思う。 勤務表の難しいところは、29日分まで完全にできても、残り1日分で詰んだら終わりって所。
では、どこかとどこかを入れ替えることによって残りを埋められる状態にしようとすると、
まずどれが入れ替えられるのかを探すのが大変。
結局普通にやれば、「順に試す方式」になってしまう。
かといって、残り1日分はマニュアルでやってね、ということにして良いかどうかが微妙。
実際にやればわかるけど、あちらを建てればこちらがたたず状態が続くだけになりがち。
ただ今回は、多少条件に合致しなくても、従業員が受け入れてくれるようなので、それが救いかな。 >>111
大事な所を数ヶ所ぼかしてるが、これだけでもそれなりにいい表作ってくれるぞ。 >>114
ちょっとだけ言っとくと、常に全部のスコアは覚えなくていい。最高の表を覚えとく。
作成中に明らかに挽回不能なスコアになった時点でその表は破棄。
順に試すなよ。あくまでランダムだ。
一番マシな適当な表だよ。 >>109のようなやり方なら、乱数もいいかもしれないけど、日付順・人順に決めていく方式だと、
もうその方式自体が「順に決める」になっているので、あとは乱数を使っても使わなくても
たいした違いはないよ。
>>109はGA的なアルゴリズムで、確かにこれなら出来そうな気がしなくもない。
ちなみに、ちょろっと試そうかと思ったけど、>>90の要件読んでも早番が何人で夜勤が何人なのか
わからなかったので詰み。 勤務表は一ヶ月に一回作ればいいから、>>109で導き出したスコアの良いものTop10を残しつつ、
29日ずっと動かし続けて、30日目にそのTop10から良いものを選んで修正するというのもありかな。 様々な意見ありがとうございます
1日の組み合わせが10億通りとか273万年とか数字で表されると無理なんだってはっきりしますね…
結局どう進めていくのがいいんでしょうか;
>>119
順に決めるなら乱数は使わなくてもそんなに違わないんですね
早番は1人、夜勤1が1人、夜勤2が1人です
>>121
月〜日の日勤者数を(8, 8, 7, 8, 8, 6, 5)に決めうちにしたとして、例えば月曜の組み合わせの数は
早番*日勤*夜勤1*夜勤2=16C1*15C8*7C1*6C1=4,324,320
と計算できる。
400万だから10億と比べるとかなり減った気がするが、1ヶ月分だと400万の30乗で約10^198通りなので、
順番に決めていく方式はやはり無理。
ちなみに、なんで組み合わせの数を計算しているかというと、実際にコードを書いて試す価値があるか
どうかを決定するため。
順番に決めていく方式は、どんなに上手くやってもまぁ無理。 >>122
やっぱり順番にというのは無理があるんですね…
アルゴリズムを使って最良の表を考えるというのが一番なのでしょうか ひょっとして、誰かが自主的にコード書いてくれるのを待ってたりするの?
念のため言っとくけど、俺は書かないから。
暇つぶしに、ローカルで>>190の方式で実現可能性を見いだせるかどうかのテストコードを書いたりは
するかもしれないけど。 >>124
そこまでは思ってないですが、自分だけでは難しいなと…
皆さんが協力してくださるおかげでここまで来られてる状況ですから
テストコードでも見せていただけたらとても参考になると思います >>109だが、やっとホテル帰ったから要件見ようとしたらまた流れてた。
>>119
出来そうな気というか、これに味付けしたものが売り物になってるからな。ソリューションとしてだが。
実際には特許ものの刈り込みとか、数学的・統計学的な式を使った任意の離散的だが偏りを持たせた2・3とか使ってるが。 >>126
流れるのそんなに早かったですかね…
やっぱり別の方法で上げておいたほうがいいのかな
http://www.dotup.org/uploda/www.dotup.org2704876.txt.html
pass:vba
そこまで素晴らしいものは到底作れないですね; >ひょっとして、誰かが自主的にコード書いてくれるのを待ってたりするの?
雑談しながら何もしないで待っているように感じる
データと条件を整理して常にUPしなければ無理と思うが
おもしろそーだから俺も待っている
>・各人の勤務ごとの月の合計(休、日、夜、明、休、有、研)を表示させたい
データを見て休の意味がわからない、日曜日は会社によって月曜日もあるが
休 日曜日、変更できる
休 日曜日、各人指定なので変更不可
休 研修なので変更不可
休 会社or法律による強制休日、変更不可
休 有給、変更不可
休 会社都合による有給、変更できる
win98.excel95でナンバーズを総当たりで解いたら
7分ぐらいかかった、上級者のコードを見たいので興味がある 今日地味に組んでみたが、VBAくそ遅い。VB6と変わらんやろと思ってたが、明らかに遅い。
最終的にbookが壊れたが、死ぬほど遅いが、ちょっと成果書いとく。
要件定義が甘いので、あてにしない。
各個人に、マスタとしてシートを定義する。
そのシートは、一月分の、
「入れない場所、絶対入る場所」を定義する。
横軸か日付、縦軸が勤務帯。朝、昼2〜昼10、夜1,2,研修、休み。
休み、研修は予め、全員を「勤務不可」とする。その上で、勤務可のみマーク。
一発目、そのマスタを読んで、全体としての、シフト番号1〜31x枠数(シフト枠n)に対する選択肢を決める。誰かの「絶対入る場所」にあたった枠は、他の選択肢を外す。
これから、ランダムで当て込んでいく。なお、一日に同じ人が働く事はないものとして、この時点で刈り込む。
一週間分を先ず決める。その一週間を基準に、個々人人に対して、一つ前のシフト枠に対して評価式のうち致命的ではないもののみ、ランダムで当て込んでいく。
ここでタイムアップ。お仕事してました。 >>131
すまん。早めにそういう類のサイトにアクセスできる環境に行くわ。
DropboxもFWに蹴られるんよね。 >>130
えっ? ダメだったの?
全然試しもしないで
できるって言い張ってたのかよ
くそ迷惑な奴だなw >>130
そんなに遅いものなんですね…
でもそこまで色々と出てくるとは;
どんなものか見られるの期待してます >>133
うん、すまん!
.netなら多少早かったが、反則よね。 月に休みが10日程度ということなんだが、望ましい休みのパターンはどのような感じなんだろう。
それから勤務日と休日の割り振りはどんか感じが望ましいんだろう。
例えば、基本は2勤1休でその3日の繰り返しが良いとか、
基本は4勤2休でその繰り返しが良いとか、
休日は完全にばらばらの方が望ましいとか、
そういう基本的な理念がわからない。
>>109
セルを頻繁に更新してない?
Excelの機能が要らないんだったら、メモリ上であれこれした方が速いよ。
Excelの機能が必要だとしても、遅くて使い物にならないのなら、メモリ上であれこれする必要がある。 そうだ、有休の話が出てこないんだが、有休(やそれに類する休み)の扱いはどうなってるの? >>130
なぁそれ本当に現実味があんの?
評価式さらしてみ? >>136
普通は、あるリズムで繰り返されるのがベターだとは思うが、>>278の所はどうなんだろうねぇ 見たところ、やはり70さんが技術、経験ともに上級者といった感じだ。
短いテストコードでもいいし、過去に書かれたコードの一部でもいいので、ぜひ見せてください。
とても勉強になると思うので、よろしくお願いします。 >>136
休みは大体仕事の間に一日、たまに2連休(月1〜3回程度)、稀に3連休(数ヶ月に1回)
理想としては月に2回前後連休、残りの休みは1日休みで振り分ける感じです
ただ希望休などで連休が多かったり(滅多に無いけど4回とか)逆に連休がない月もあります
>>70
扱い…例えば月10回の休み+有給です
他に何と説明したらいいか;
>>139
あんまりリズムとかないと思います。希望休を皆自分勝手に入れるので…
>>140
同意。見せていただきたいです 元スレの329=331(システム要件書 ドラフトを書いた者)だが、規制が来て書けなくなってる間に仕事が忙しくなってしまった。
で、自動化の方向性とか、その辺について書いてみようと思う。
(忙しくなってからはレス読めてないので現状はよくわからんが、役に立つことを祈る。)
その前に・・・278氏、トリップ付けるなり、別名付けるなりしないと、このスレの278なのか依頼人の278氏なのか分からなくなるぞ。
自動化の方向性だが、
・1項目づつ決定して行く(しかないよなぁ・・・。)
・条件に合う候補が無くならずに月末まで埋まればよい
・条件に合う候補が途中でなくなったら最初からやり直し(たとえば夜勤連続じゃないと埋まらないとか。)
1項目づつ決定する方法
・スタッフ全員に対して、その項目に対する適正度合を得点化する。
(資格があれば+50、前回勤務と重複してなければ+1、ペア勤務不適格者は-1、無資格なら-2000、既に入力されてる人は-1000とか。)
(全条件に対して評価の重み付けをする必要がある。上記は適当に作った例なので、実際の状況に合わせて練り直す必要あり。)
・同じ点数の人については乱数で順位付けする(やり直し時に同じ結果になりにくいように。)
(乱数を別項目にするか、得点を10倍とかして、1ケタ乱数を足しこむか・・・)
・得点1位のスタッフを項目に当てはめる
(基準点数を決めて、1位の得点がそれ以下の場合は条件に合う候補なしでやり直し。)
(手動入力の場合はコンボに得点の高い順にスタッフを並べればいい。)
時間が出来たらコードも書いてみようと思うが、今の所デスマ中なので期待しないでほしい。
・原発は日本を滅ぼす、即時全廃せよ
・六ヶ所村再処理工場直下に二つの活断層
・耐震基準450ガルと、著しく耐震性に欠ける施設
・大事故が起きたらチェルノブイリを遥かに越す未曽有の大惨事が
・代替は天然ガス・コンバインドサイクルで十分
http://d.hatena.ne.jp/kensho01/20120208/1328718592 流れはこんな感じで良いのかな?
@入力シートで行事日、各人毎の希望休み、研修日を設定し確定
A1〜2日迄の明け、夜勤休みを自動設定して希望勤務詳細シートに内容をコピーしシート画面に移る
此処で更にシフト毎の出来ないパターン(日勤、夜勤、早番の三種類)を設定
B入力シートに戻して指定日(通常は1日から)希望勤務詳細シート、従業員相関シート(能力定義も此処で)曜日別人数表(最低)を元に最低人数分を自動振り分け
・行事日は曜日別人数に+2名自動追加
・振り分けで余った分はマニュアルで振り分けする >>142
>その前に・・・278氏、トリップ付けるなり、別名付けるなりしないと、このスレの278なのか依頼人の278氏なのか分からなくなるぞ。
そうですね…名前は改めました
>・1項目づつ決定して行く
これは1日ずつってことでしょうか?それとも早番、夜勤…といった感じ?
得点化というのは前に出ていたアルゴリズムと同じようになるのでしょうか
それとも手順(コード?)は全然別なのかな…
>>144
流れはそんな感じですね
行事日の設定は日を設定かその日の日勤者数を設定するとどっちが早いのかな
最悪勤務指定で必要人数分の職員を適当に選んで日勤希望にしておくのがいいかと思ってたけど余計時間かかるようになっちゃうかな
行事日は+2名で足りない可能性があります
>>145
1項目は1項目。ある日の早番ならある日の早番ね。
たとえば、3/6の夜勤2を決めるとすると、
3/6にすでに休みと入力されてると-1000、3/6に研修が入ってると-1000、
3/6の他の勤務に入ってると、-1000、
3/5が夜勤だと-1000、3/4が夜勤だと-1000、3/3が夜勤だと-1000、
3/6の夜勤1とペア駄目な人だと-1000、
前回の夜勤明けからの日数で+得点(日数×10とか。)
有資格者だと+100とか
つまり、その勤務に適してるかどうかを数値化するの。
それで、その勤務に一番適してると数値で出た人を割り当てていく。
コンピュータは厳密にいうと数値の計算しかできない。
(文字の処理なんかは誰かが作ったプログラムで数値化してから行ってる。)
基本に立ち返って数値化するのが早道だと思うよ。 @1日分の自動割り振りの順序
夜勤1→日勤2→早番→夜勤2→日勤3〜5→休み(夜勤明け、希望休含め5?名)→日勤6〜
A・各担当は前日の担当の次席が基本で各能力の次席者がいなくなったら最上位者へ
例.夜勤1 A→E
夜勤2 B→F
日勤2 C→G
早番 D→H
・休日の処理
夜勤明け→5日以上連続勤務者→4日連続、3日連続の順で設定
・最低勤続者数、休日者数に達したら残りのメンバーは空欄としておく >>141
> 理想としては月に2回前後連休、残りの休みは1日休みで振り分ける感じです
なるほど。これが理想か。
> あんまりリズムとかないと思います。希望休を皆自分勝手に入れるので…
ひょっとして、半分以上またはほとんどの休日をみんな事前希望してしまうのかな?
なんとなく、事前希望は、ひとりあたり月に0〜2日位で、ほとんどの休日は自動割当
するのかなと思ってたんだが。
>>140
sourceforge.jpでとあるVBAのソフトを公開してるんだが、本名で公開してるのでここではちょっと…
あと、重ねて言っとくけど、この件に関しては絶対にコード書かないから。
書き始めてしまうと、40〜50時間は持ってかれそうだから。
個人的には、いろいろと要件が明らかになってきて、「絶対無理」から「いけるんじゃない?」
くらいな気になってるよ。 想像してるんだけど、夜勤1と夜勤2は、まとめて「夜勤」として割り振って、
日勤3以降もまとめて「日勤」として割り振って(ひょっとして日勤2もあわせて「日勤」でいいかも?)
あとから割り振り直すというロジックじゃ駄目かな。
>>107で、何故日勤2だけ特別扱いしてるのかわからない。
つまり、自動割り振りは「早番、日勤、夜勤、休日」の4種類だけ。
これで夜勤禁止ペアや推奨ペアの条件をクリアできて、なおかつ日毎の勤務者数をクリアできてれば、
日勤内・夜勤内の役割分担は後付けでできそうな気がするんだが… あと、>>278はわかってないと思うけど、これプロがやれば要件定義・設計(実現方法探索)をやってる間も、
1時間あたり3,000〜5,000円位かかることなんだよ。 マウスで夜1を引張ってくればセルに
夜1.明.休と入るのは出来ないでしょうか
数字は打ったほうが速そうですが
30日の月で夜勤5回が3人なら、31日の月は5回が5人
休みと前月分をみればだいたいメンバーが決まる
パソコン手入力と当番表の作成に時間がかかっている気がする
過去のデーター呼出しもできてないと思う >>151
> マウスで夜1を引張ってくればセルに
> 夜1.明.休と入るのは出来ないでしょうか
できるけど、そんなことしたいの?
夜1.明.休
夜2.明.休
と事前にシートの勤務表の外側に書いておいて、3つのセルをまとめてコピペすればすむじゃん。 >>150
結構安めだな。
俺は全日の枠を一次元配列にして、各個人に、対して、今の枠の番号と、次に入ってる枠との差の数字と、今の枠番号を枠数でモジュロとった数字組み合わせて評価式書いてた。
トライアルアンドエラーで、保存せんとガリガリ書いてたら無限ループ入っちゃってブレークも効かなくて飛んじゃったからソース無い。すまん>>138 >>153
そんな安くないと思うけどなぁ。一人月いくらでやってるの?
> 無限ループ入っちゃってブレークも効かなくて
ひょっとして、強制ブレークの方法知らないとかじゃないよね?
あと、実行する前にCtrl+Sしようよ。 >>146
>たとえば、3/6の夜勤2を決めるとすると
-1000=入らないになるんですね
それなら3/3が夜勤だと-100くらいに設定すればいいのかな
>前回の夜勤明けからの日数で+得点(日数×10とか。)
これは分かりやすくていいですね
>有資格者だと+100とか
資格の有無はあまり考慮しなくていいと思います
>>147
休日の処理にある連続勤務5日は不満というところで少し厳しいかもしれないですが…
自動割り振りの順番としてはそれがよさそうですね
>>148
>ひょっとして、半分以上またはほとんどの休日をみんな事前希望してしまうのかな?
皆大体毎月少なくても1回、平均で月3日分くらい指定休を入れています(勤務指定入れるともう少し多くなるかも)
>sourceforge.jpでとあるVBAのソフトを公開してるんだが、本名で公開してるのでここではちょっと…
見たかったですが本名出しているのではここでは無理ですね;
上級者でも50時間もかかるんだ…これはホントに一年は軽く超えてしまう
しかもまだいけるんじゃない?程度orz
>>149
夜勤、日勤をまとめて出来るならそのほうがいいんですけど…
日勤2番が特別扱い(正職しかできない)のは記録の記入を担当しているからです(夜勤1もそうです)
でもパートさんとか出来ない勤務(3番とか)があっても「日勤」でまとめることはできそうかな
>>150
普通に売っているものが高いわけですよね…ここで関わっていただいている皆様には本当に感謝しています
>>156
> 上級者でも50時間もかかるんだ…これはホントに一年は軽く超えてしまう
いや、50時間でできるわけじゃなくて、50時間くらいはこの問題に費やしてしまいそうということ。
受託開発案件だとしたら、2〜5人月じゃないかな。どこまでやるのかによるけど。
ちなみに、1人月はピンキリあるけど、50〜90万くらい。
ただ、それは第三者が作るから時間がかかるのであって、同じプログラミング能力があれば
当事者ならもっと短時間でできる。
だから、どこまでやるかを決めて、まずコード書き始めて、で、わからないところを質問する。
VBAスレにあるような粒度の質問だったら、答える人多数だよ。 >>156
きっと有資格者と言ってるのは、その項目に対応できる人って意味だと思うよ。
たとえば
夜勤の項目の時、夜勤できる人+100、夜勤できない人-100とか。
早番の項目の時、早番できる人+100、早番できない人-100とか。
>>157
なるほど…
やっぱりもっとしっかり勉強しなきゃいけないですね、短時間でできるくらいに
>>158
そういうことでしたか、納得です >>154
出先のPCだったからある程度作ったらソースだけコピペでメールで持って帰ろうと思ってたんよ。
文書保存も添付メールも監査対象だから。
強制ブレークってcrtl+Breakか?あれ止まるときと止まんない時があるぞ。 そう、Ctrl-break。
で、止まらなければプロセスkillだけど、保存してないならアウトだな。
というか、ファイルの保存が禁止されてる環境でよくやるね。
キーストロークとかも監視されてたりして。 278さん
Excel2000って・・・
セキュリティ大丈夫?!
サポート切れて随分経ちますが・・・
278さんのファイル開くのが不安だ
それと、このプログラムはけっこう重い処理になりそうなので、
セキュリティと処理速度から考えて
はやく新しいPCを用意して下さい
このスレで、その名前は
悪意がある冗談か、非常識な迷惑かどちらかにしか思えない >>162
Excel2000で作ったデータ(プログラム含む)だからと言って、2007とかで開けばセキュリティとか関係ない。
まあ、2000使い続けるのはオヌヌメしないけどね。
278氏、いっそOffice2010 途中で書き込んでしまったorz
いっそOffice2010Proでも買ってAccessでプログラミングした方が楽かもね。
ExcelよりはAccessの方がこういうのは得意分野だから。
慣れないと何にもできないけど・・・。 非ITの零細職場ならExcel2000とかよくある話だろ
最新版Excelを都度当たり前に購入できるような職場なら手作りしなくても業者に発注した方が早い 昔うちにあったCD?から入れたExcelなので…
バージョンアップで2007にはなっているはずですけど;
職場が2000なので使うのならそちらも更新しないといけないですね 以前、連続日勤後の早番で不満があったりするとの事だったので振り分けの最優先に休み(先着n名分)を先にもってきたほうが良いのかもと思った 勤務が続くのを嫌がられます
なので日勤*3日→夜勤とかも少し嫌がられたり…これに関しては仕方ないので何度かありますが;
>>56は>>146的な自動化で良いと思ってる?それとも別の方法を考えてる?
>>166 278氏、開発用と運用用でバージョン違うんだとしたら数日に一回ぐらいは運用用で動かした方がいい。
完成して移したら全く動かないとかなると困るだろうし。 >>169
ちょっと複雑すぎるような気がする…
278氏以外の人が担当になってもローテーの組立が理解でき紙ベースで行なっても組立可能な事が良いように思われる
>>170
スコア付けずにどうやって自動化するの?その方法が気になる。自動化はしないの? >>70
とりあえず1〜2hでもコード書いてみて
コード書かないプログラマーなんて信用できんぞ
70もそう思わないか? >>172
そう思うけど、俺自身は別に信用されたいなんて思わないのでどうでもいい。
このスレに居るのは、誰かが自動振り分けコードを提示して、へーすげー、やればできるんだねー
って思いたいだけ。 参考までにどんな感じで書き進めていけばいいのか一部でいいから教えて 俺が聞かれてるんだろうか?
どんな感じと言われても困るが。 >>171
スコアは付けなきゃいいでしょうね
ただ、それ以前の問題として設定表の構成で悩んでたり悩んでなかったり…(所詮他人事なので)
さらにいうと入力シートのry
もう一寸>>278の暗黙知を可視化しないとダメかな?例えば妊婦さんでも夜勤、早番ありでよいのか?別部署から移動したてのベテランでも夜勤〜日勤2を直ぐに組み込んでよいのか(俺的には、こんなもの組むのはクソだと思うケド)
最高連続勤務日数は何日か新人2名に対して専任主指導者がつくのか人数は?
行事の予定が無くても繁忙期(月末、月初?)とかあるのか
行事によっては事前準備に結構な労働時間がかかるものがあるのか、同じ日に行事が重なった場合(敬老の日+誕生会とか)更に介護士の増員が必要なのか 一月分のローテー表を組むのは月末?月初?
恐らくは月初の2日か3日にならないと厳しい(変更が多発する)と見ているけど…
他にも確認しなきゃいけない事が多々あるような無いような…
>>177
>妊婦さんでも夜勤、早番ありでよいのか?
今いる妊婦さんは夜勤はやってないです(早番はやってるけど)
これは可能勤務で夜勤のチェックを外すようにすればいいかな
>別部署から移動したてのベテランでも夜勤〜日勤2を直ぐに組み込んでよいのか
最初の一ヶ月程度は3番以降の日勤〜、二ヶ月くらいから夜勤、2番に入ると思います
>最高連続勤務日数は何日か
早番を含めて3連勤+夜勤、明けで5連勤は超えないようにしています
ただパートさんは自分で休みを指定するので月に2回くらいは平日5連勤です
>新人2名に対して専任主指導者がつくのか人数は
別部署も人が足りなくなるのでこっちに来るのは1人だけと思います
専任というのはなく、その日その番号だった人につくというようになります。なのでパートさんにつくこともあります
これは最初の1ヶ月くらい(指導月)は初めから入れておかず、手書きで加えようと思っています
>行事によっては事前準備に結構な労働時間がかかるものがあるのか
あります。その場合日勤時間に数名(大体1〜2人)抜けるので残った人数で仕事をまわしてます
>同じ日に行事が重なった場合
行事は必ずずらすようにしてくれているので更に人数が必要ということはありません
>178
指定休の締め切りが10日、そこから数日で勤務表を作って事務所へ提出
出来上がって配られるのはなぜか25日前後。毎月これくらいです
他にも確認すること… >>180
> 他にも確認すること…
つか、これまで明らかになった/した仕様で仕様書を更新して、誰でも見れるところに
置いてくれないかなぁ。
Google Documentとか使えないの? もしおまいらがそれぞれ勝手に部分部分のコードを書くとすると、
先に大まかな枠と分担とインタフェースを決めないと、つなぎ合わせてもうまく機能しない。
本当は278が自分である程度枠になる部分を作って、
部品をスレで発注・コンペする形式がいいんだろうけど素人の278にそこまで期待はできないな。
誰かが278の代わりにプロジェクト管理とドキュメント収集をやらなきゃまとまらないだろう。
本当は言いだしっぺのオレがやるべきなんだろうけどデスマ中。スマソ。
(現にデスマ前は勝手にドキュメント化してたわけだし。)
70が積極的にかかわるなら70にお願いするのも手かもね。
56はコーディング専門っぽいし。(ドキュメントの話あまりしないし。ユーザーSEかな?)
プロジェクト管理は胆だし、負担も大きいんで70に頼むのは気が引けるが、適材適所で考えると・・・。
皆さんに手伝ってもらっている身で本当に申し訳ないのですが
明日の明けから3日ほど東北の支援ボランティアに行きます
遠いので帰ってくるのも遅くなってしまうと思います
スマホからスレは見れますが、多分まだ書き込みが出来ないと思います
何かあったら代行で書き込んでもらおうと思っていますが…
わがままを言って申し訳ないです ドキュメントはガラケー(PDF可、写真は100KB迄)で表示出来れば助かります。m(__)m
因みにWIN98のノート(VGA表示)Excel2000使用でネット接続無しの環境で仕事ではコンピュータは使いません
>>180
>>2の写真をチラ見した時(上記理由で全部は表示されなかった…)1〜31日までの表だったと思ったんだが提出する物は違うの?
>>184
〉東北の支援ボランティアに行きます←業務的にいうと休み扱い?研修?
研修旅行という名の慰安旅行とかあります?ある場合の扱いはどうしてます?
休みでないけれど休んだと見なしてくみこんでいるとか >>278とのやりとりから現状、ローテーション表は大まかに3回に分けて作成(場合によっては2回)と考えてよい?
@前月末までに翌月の1〜5日位迄
A月初めに12日位迄
B10日過ぎに残りの日数分
遅れたけど東北のボランティアご苦労様です。ケガや病気に気を付けて頑張って下さい(帰って来られてからで良いですよ) >>186
どこからそう読めるの?
>>180に書いてある内容によると、
指定休(スタッフが希望する休み?)の締め切りが(前月の?)10日
そこから(作成期間)数日で勤務表を作って事務所へ提出
出来上がって(刷り上がって)配られるのは(前月の?)25日前後
って事でしょ?
10日の締め切りから遅くとも25日までに作成するって事なんじゃないの?
>>187
そうともとれるので確認事項とさせてもらったが俺的には下記の理由で>>186的な運用をしているのではないか?と思った
@278が別スレで最初に相談した時に1月分+翌月5日くらいまでとレスしている
A>>180に「なぜか25日…」と書いてある
何故?詰まりはそんな頃に配布されても意味がないという事?
B子供がいたり何かクラブみたいなのに所属していたりすればわかるが翌4月の予定なんて3/9日、今日現在わからないと思う
まあ通常は会社の定休日に合わせて都合をつけたりするものだが、その定休日が基本的にないので… >>188
勤務表のある会社、4〜5社に関わったが、
・勤務表の最後に翌月の最初数日を暫定(変更アリ)で入れるってパターンが多い。
・次にシフトを決めるのに休日や希望勤務の提出期限は前月の前半というパターンが多い。
・勤務表が決まった後の予定変更は勤務者同士での相談で入れ替えて上長に申請のパターンが多い。
自動化システムは頼まれないので作ったことはないが、これが普通だと思ってた。 >>188
これ以外には取れないでしょう。
5月分の勤務表作成スケジュール:
4/10: 指定休の締め切り
4/11〜4/13: 278が勤務表を作成
4/13: 278が事務所へ提出
4/25: 事務所が全員に配布(4/13に出来てるのに、配布するのが遅い) 278さんに質問です
要件には日勤は10番くらいまであると書いてありますが
当番表には7番までしか項目が無いようです
8〜10番はどのように記載されるのでしょうか?
8番については、7番の欄に一緒に「7番/8番」と入れるのかなと
思いましたが、9番、10番については、見当がつきません 書き込めた
>>185
帰ったらガラゲーでも表示できるよう試してみます
勤務表は1~31日のものです
ボランティアは完全に個人的になので普通の休みです
研修旅行(一泊二日で)あります
研修は仕事扱いで休みとはまったく別です。ただ勤務としているわけではないので日勤などにも入りません
なので休み10日+研修2日になります
>>186
紛らわしい書き方ですみません
>>190で綺麗にまとめてくれた通りです
>>189
>>188
勤務表のある会社、4〜5社に関わったが、
>・勤務表の最後に翌月の最初数日を暫定(変更アリ)で入れるってパターンが多い。
翌月はあまり考慮してません
>・次にシフトを決めるのに休日や希望勤務の提出期限は前月の前半というパターンが多い。
希望の期限はうちは前月の10日までです
>・勤務表が決まった後の予定変更は勤務者同士での相談で入れ替えて上長に申請のパターンが多い。
これはうちも同じです >>191
細かく見ていただいていてありがとうございます
10番であったときは(事務所がやってくれるのですが)8番と同じように7番の枠に8.9.10番も入れます
過去に11番までいたときは6番の枠にも入れてました >>189-190
そうすると4月末になった段階でどの位変更が発生しているのか6月の勤務表は5月末の予定だけで作成して良いのか気になる
そういった意味で丁度良い時期(3月は卒業、4月は入学、就職、移動や転勤等)なので>>278は教えてほしい
4月分の勤務表作成スケジュール:
>
3/10: 4月分指定休の締め切り←この時点で高校、大学の入学式の日取りが判っていることが望ましい
3/11〜3/13: 278が勤務表を作成
3/13: 事務所へ提出→事務所は2月末もしくは3/10までの実勤務状況と照らしあわせて偏りがないか確認?して承認
3/20: Iさんが妊娠して悪阻が激しいので夜勤が出来そうに無い事を相談→以降のシフトを全部組み替え
3/25: 事務所が全員に配布3/31: B、Eさんが子供の引っ越しの手伝いの為に有休や他の人とシフトの入れ替え、Iさんの件もあり3月のシフトにかなりの偏りが発生している
(Fさんは夜勤回数が2回多くCさんは最終週日に早番が2回あり、しかも他の人より1回多い、Dさんは規定休数、休めなかった)
以前コテハンにしたらどう?と書いてあっさり無視されたもんだけどw
それ、全然ハンドルネームになってないというか、簡単に騙られるよ
ちゃんとしたトリップにしたほうが良いと思うんだが。 >>194
お忙しい中、お返事いただきありがとうございます おろ、考えながら書き込んでいる内に>>278から解答があったみたいですね
スマホに変えようかなあ… テキストはどっとあぷでもみれるんだけど大きな写真とかBookが取り込めなくてねぇ…
うーんと例えば2日日勤+研修2日後のシフトの扱いをしりたい(連勤3日の人がいたりする場合に休みの判定はどちらを優先しているのか、テキトー?)
後、他の人も言っているようにトリップをつけて
誰かがドキュメントに纏めたくても>>278のレスを追わなくてはいけないので(今のままだと全てのレスを読まないといけないので) テス
l! ̄オ |:.:.:.:.:.| と′ , 丶 .: r┘
 ̄リコ l:.:.:.:.:.| _「┘ / / l | \ノ _〕
く」!L.|:.:.:.:.:.! L. // /, l| l l i l ハ:. _〕
〃l| l L.i:.:.:.:.| r┘,./ /, !|| l| l l ハ:/└i_
|i l| !└l:.:.:.:| 〕// //l l ! li l| l l |!:: と__〕
li〃!|l トz水゙/イ ,://l:| l |l l| li | ! l|! とl「´
|! | !小こシ」 !/ ≧:xイl ! ,'! /l , / /l _.」!|!
,l| l |ハ:.:!|l イ iイ:r::ハ` / '//二ラ// イ| l| l! __
/!| l l \! l| `¨ イrソ/iツ行l 〃 / |
,'/ ! l|l 「¨| llト、 r ァ ¨´イ |l i |l |! / / <良いお酒は美味しいのよ♪
,' ! i l|i _|:.:.l:.|l:.|:.> .、__ イ´ !:| ! l| l / /
! l , l|'「 |:.:.l|:li |:.:.:.:.薔:.:.:.:.:.:.|、ハ! l::-‐rz/ '´ハ
./ , i /l|| ヽ/ l| l;,;,;,ノ゙ヘ;,;,;,;,;,;,Y ̄|ヽ {!' / / ノ!
! / l , l| ! / l |:.:.:.| |:.\:.:/ i 〉 \{!」、ヽ'イ丿
| li / l| / l -_〕:.l |:.:.:.「´ 〈 ト.、 、\テ¨´
,' l | // ̄ , イ´.:.:.:.:.:.:! i:.:.:.:ヽ ヽ | 、_ ヽ
l| \ <ー- 、__:.:.:| /.:.:.:.:.:.:.\ \ \ ヽノ
l l|  ̄工>_/-、j |, -、_, - ゝ _|__〉、 〉
疲れて寝てしまってました…
>>195はよさそうかな
早番が一度多い程度はそのままでいいと思います
休みが回数分なかったら翌月に手書きで交代してもらい多く休んでもらいます
>>196
失礼しました
トリップつけようとしましたがうまくいきません(携帯からだから?)
うちのPCで書き込むときまで許してください
>>199
研修後は行事や予定、希望休による偏りなどがなければ次の日を休みにしようと考えています
研修も仕事と考えるので日勤などと入れて連続は避けています
大体てきとうです 昨日帰ってきてそのまま寝てしまってました…
>>202
朝時間なくてちらっとしか見れなかったけど凄い出来です
もうかなり完成に近いんじゃないかな
また少ししか試せてないので帰ったらじっくり見させていただきます
>>204
Aの回数制限は別にあるんですかね
あと新人や異動で来た人も夜勤1もやるかも >>202,204は別人
ちょいと内容のまとめ直しと確認したくて上げてみた >>202
ダウンロードして動かしてみたけど、エラーが発生したので報告。
1. 勤務表管理.xlsをオープン
2. [勤務表の作成]ボタンをクリック
3. [トライ!]ボタンをクリック
setPreFill()の
> kinmuban = base_kinmu.Offset(r_adjust_kinmu + r_kinmu, c_kinmu)
で、実行時エラー13。
コードは見てない。 自分も色々いじっているとエラーが出ます
(ひな形開いた状態で勤務表管理の勤務表作成→いいえ。指定解除を押したときなど)
>>207のところを考えているのですが、素人には難しくなかなか分からない…
幸い続きは先になるようなので頑張って探します あーあ、このスレも終わったな
よくあんな糞コード公表する気になるよな
今後はこの糞コードを軸に話が進むんだろうな
おい、そこの書かないより書いた方が偉いとか思ったお前、大間違いだぞ なら他のやつもあげてみたらいいんじゃないかな
口挟むだけのは結局かけないんじゃない?
自分の案も出すくらいできるでしょ まあ次誰かコード出したら、どっちも要件にあってなくて、コードが糞なので
いいとこ取りも出来なくて、ぐだぐだになるのは目に見えてる
次出す奴が完璧なの出せば問題ないがな
俺は無理w わかった。分析ツールが必要なんだ。
どういうロジックで勤務表を生成しているのか、コードをちょっと見ただけではわからないけど、
これ、かなり良い線行ってるのかな?
ちょっとアドバイス。
ワークシート関数は段階的に計算結果を保存しながらやった方がわかりやすい。
例えば、
AZ6 = "月末"
AZ7 = EOMONTH(DATEVALUE(SUBSTITUTE(SUBSTITUTE($A$4,"勤務表","")," ","")& "1日"),0)
とかにして、表内の計算式ではAZ7の値を参照するとか。
あるいは、もっとダイレクトに「当月の日数」を計算してセルに入れるとか。
もっと言うと、A4には2012/4/1を設定して、書式を「ggge"年" m"月" "勤務表"」にすれば、
A4を日付データとして扱える。
あと、好みだけどconstは英大文字を_でつなげた単語にすると見やすい。r_adjust_kinmuは、R_ADJUST_KINMU。
これで、俺がこのスレに居る理由ももう無いかな。 ろくに動かん糞コード引きずってないで
無視して先へ進もうぜ 今後の流れだが、278がもっとガンガン書いていかんと全く進まんぞ
自主的に要件、設計、コードでも頻繁に書いて70他がアドバイス
周囲を巻き込み続けないとな
とにかく色々いじって見たけどやっぱり難しい…
>>212
アドバイスありがとうございます
教えていただいたところ試してみたいと思います
大文字のほうが見やすいですね
>>214
ガンガン書いていかなきゃですよね;
でもUPしてもらったものもなかなか直せないしもっと勉強しなきゃ…
もっと頑張ります 明日、友人に頼んで>>18の内容をダウンロードしてもらうので宜しければ再Upお願いします
>>215
> とにかく色々いじって見たけどやっぱり難しい…
何が難しいのか、具体的に言わないと
@自動振り分けの結果はかなり悪い〜良い?かなり良い?
A手入力による調整が難しい
・そもそもおかしな所をみつけるのに時間が懸かりすぎて難しい?(各人の休み、勤務種別毎の合計表示がないので278の頭の中で計算しないといけないとか)・一件の手入力に時間がかかる(特に日勤の入力等)や誤った操作で消してはいけない所を消してしまったとか
B初期設定(職員情報等)の変更、追加、削除に時間がかかるとか設定方法そのものがわかりづらいとか
>>216
どちらかというと自分の知識不足でコードを読むのすら大変です…
もともと学校で少し習った程度しかVBAは分からないので;
本やネットで調べながらやってるから余計時間がかかってしまってます 途中で寝落ちしてしまった…
VBAは初心者レベルなので>>18のプロトタイプのコードの中身を理解するのに苦労しているという事ですね
そこは頑張ってとしか言いようがない
俺も初心者レベルでほぼ独学でExcelの使い方を学んで勤務表他業務用数本をVBAで組んだだけなので18のソースを追えるかちょっと不安>< 読めない方が悪いのではない
読めないコードを書く方が悪い ざっと眺めて読みにくいコードなのでやめた。
たまに覗いてるけど、70がいなくなったら終わりだな。 レガシーコード(テストの無いコード)のリファクタリング大好きっ子なんだけど、
人様のコードを勝手に修正するのもアレだし、時間も無いし…。
ステップ実行しながら追えば読めるとは思うよ。 まだDLしていない…
>>70,142さんが読みにくいと云うことはコメント類も殆どついてないのかな?
まあ>>18さんは振り分けの結果が満足のいくレベルか確認したくて超急ぎで作ったんだろうし(不満が大きければ振り分けのアルゴリズムを大幅に変更してもらえる?)
2000だとシート上に項目追加するだけでえらく影響が出たりするから(2007?からある程度連動するとか雑誌でみたような…)
俺的には名前と日別のシフト状況の間に休み、日勤、夜勤数等を列項目に
日の下に行事日区分、希望日勤者数、実日勤者数を行項目として表示させようかなあと考えていたので読めないと肉付けも難しいですよね
>< ガラケーだと書き込みにも条件が多すぎる… (;´Д`) >>223
コメントは所々に入ってるよ。
ファイルがいくつにも分かれてて、あちこちのファイルにコードが分散してて読みにくい。
再Upとしてすぐ修正できるところだけ数行追加しました
・Sheet1で空セルが指定できるところ
・確認用に色付けしたまま、リセットやトライすると色が残ってしまうところ
http://www.dotup.org/uploda/www.dotup.org2747401.zip.html
pass:vba >>222
人様のコード勝手にいじっちゃダメでしたかね;
まだいじったって言えるほど変わってないけど…
>>223
バージョンの更新?したから2007になってると思ってたけど、確認したら2000のまま…バージョン自体は変わらないのかな?
希望日勤者数の項目があれば行事日区分はいらないかもです
>>227
修正版ありがとうございます
まだ変更箇所確認してないのでこのあと確認させていただきます >>226さん有難う。>>227の分含めてDLして貰えました。
今から見ようと思います。スレちになるけどスマホだとDLしてmicroSDにおとしてパソコンで見る事が出来るのかな?
電池の持ちが余りにも悪くて買い換えようか悩んでいるもので…
動画とか余り見ないしネットも2チャンくらいなものノートも一年以上動かしてなかったし (^o^; >>231 それなら買い換えてもいいかな
>>278さん、もう少し質問。
@嘱託の休みが多いのは事務所から働ける毎月の勤務日数或いは時間数の指示がなされている?
Aパートの場合も同じ?
132時間以上で会社の社会保険加入義務(強制)が発生し主婦の場合118時間超で税金を納めなくてはいけなかったのを思いだしたものですから… >>229
そうですか、よかった;
>>232
パートも嘱託も休みの回数は年度始めに決まっています(事務所から回数書いた紙を貰う)
それも写真撮ってあとでUPします >>233
>ウェブアルバムめんどそうだったのでアプロダですみません
外注したらウン十万円のものタダで作ってもらっておいて
自分の骨惜しみは「面倒」だとかどんだけだよ >>234
だからドロップボックス使えって言ってるだろカスが。
もう絶対コーディングしてやらん。 Googleドキュメントだと確かに面倒だったきがす
他のやつでうpすればいいんじゃね? >>234
Uぷ、すいません。
まだ、ちょこっとしかみてませんけど、やっぱり休みの割り振りに偏りが出てるみたいですね(パラメータの連勤数を下げればかなりかわるかも) >>235
言葉足らずで申し訳ないです…
面倒なのは見るほうがなのでUPするのはすぐ出来ます
>>236
失礼しました、次からはドロップボックスを使うようにします
>>238
偏り出ますね;特にパートのPさんはなぜか月ごとに回数も変わってくるし…
家族での収入による調整だとは思いますが >>278
要件の説明だけだとわからないので
実データをもとにしたデータを3年分ほど
上げてください
前提条件(指定休、希望休、指定休、希望休など)と
実際に作成した勤務表をできるだけ詳しく
お願いします 間違えました
指定休、希望休、指定勤務、希望勤務
です ダウンロードしたの、ボタンを押して動かない
みんなテストできているのか
VBAを直すということは動いているんだろうな 初歩的な質問で申し訳ないですが
セルAP5:AP34に乱数を配置したとして
その中の最大値のあるセルの行番号を求めるにはどうしたらいいのでしょうか? >>247
本当に分からないんだったら
VBAでも何でもいいからプログラミングの本を読んで勉強した方がいいですよ
このレベルのことをいちいち掲示板で訊いていたら答えるほうも切りがないので
例えば一つのやり方として
・変数iを宣言 (カウンタ、行用)
・変数maxRowを宣言 (最大値のある行用)
・maxRow = 5 (初期値)
・for loop でiが6から34まで繰り返す
もし、Cells(i,"AP") > Cells(maxRow,"AP") なら、
maxRow = i とする
・for loop を抜けたら maxRow が最大値のある行番号です
これは、最大値がひとつの場合を想定しています
最大値が複数ある場合は、一番小さい行番号となります >>248
ありがとうございます
まだまだVBA勉強中でして、この程度のことも分からず申し訳ないです なあ、最初の発言が2/19で、もう一ヶ月以上たってるんだけど、VBAの勉強は何時間したの?
正直引くわ まぁ初心者が一ヶ月程度でできるほど簡単じゃないってことだ >>249
勉強中って・・・>>36この時の勢いはどこに行った?
そりゃま初心者じゃどれくらいかかるかなんてわかりようがないよな むしろ1年とか言ってたのが1ヶ月でここまで出来てるなら凄いだろ
全部56がやってくれてるおかげだが >>255
俺?なーんにもしてないよ
18が未完成とはいえ、あれだけ作り上げてると赤の他人としては一寸触れないもんね ExcelVBAパーフェクトマスターくらいは持っておいて損はないと思う
(この本と後、500円くらいの雑誌2冊とマクロの自動記録とかで独学したなあ) >>256
むしろ色々触ってっていいんじゃないか?ダメならうpしないだろうしその方が18も参考になるだろ 昨日、町の書店で見た【ExcelVBA逆引き大全 600の極意】この本良いかも
後、【続ExcelVBAのツボとコツがゼッタイにわかる本】(立山秀利 著)こちらは見たことないがスケジュール表の作成を主題にしているようですね >>256
他人が触れないのは、コードが糞だから。本人は自覚あんのかな?
>>259
最初の一冊に「逆引き○○」とかは全然駄目。
素直に、VBAの基礎とExcelのオブジェクトの操作方法を説明してる本を買うのがいい。 な、俺の予想したとおりになったろ
俺は>>18のコードは仕様的に致命的な欠点(夜勤の回数を指定できない)があって使い物にならんと思ったんだが
278はどう思ってんのだろうな 少し離れた町の本屋行ったけどVBAの本って全然ないんですね…
やっぱり大きい店に行かないとないのか;
パーフェクトマスター素直にネットで買おう
>>261
自分ではとても作れないレベルのものなので使い物にならないなんて思ってないですけど… つまり、今までは勉強する気なんてなかったってことか
アホクサ >>263
そういう本買うから勉強が進まず挫折するんだよ。
この手の本を買いなされ。
『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本―最初からそう教えてくれればいいのに!Excel2007/2003対応 [単行本]』
http://www.amazon.co.jp/dp/4798017973/ 早番、日勤Aが勤まるメンバー数が14名…
詰まりは早番勤務後の次の早番予定は15日後(幅をとって間隔のめやすを12日、最大3回)以下、同様に日勤C〜は16名なので最大2回めやすは14日、最後の休み間隔は4で設定実行…
最初よりかなり良くなったけどメンバー間の休み数のバラツキがもうちょっと…かな? 過疎っちゃてるけど>>278的には使えるレベルなのかな?それとも自動振り分けが満足いくレベルでない?
要求定義にそって色々、弄ろうとしたけど日々の日勤者数=休みの人数が確定してないと無理ぽいなあ >>268
使えるレベルは>>227のことでしょうか?
どこをどうすればうまく割り振れるのか…使いこなせてないです
>日々の日勤者数=休みの人数
これはその日の最低勤務者数ではなくて、ですか 今のロジックだと付属の説明で>>18が述べているように割り振りが難しい。
単純にシフト種別毎に勤務回数(昇順)、最終勤務日、メンバー数(表示Noを使用)のテーブルを参照して逐次探索した方が良さそうなんだけどその日の勤務予定者数が確定してれば尚良いかと
ただ、現ソースに修正しようとすると読みづらくてね… もうちょっと詳しくいうと
@前月分の全勤務状況をシフト毎のテーブル(回数、日付、メンバー表示No)にセット
A当月の指定勤務があればそれも回数にUpしてソートB夜勤1のテーブルから回数の少ないメンバーを検索してセット以降夜勤2、早番テーブルを検索という感じで
※禁止の人は最大値を回数を減らしたいメンバーにはウェイト加算する 夜勤Aの時にペアチェックの追加ロジックが必要なだけで他のシフトも同じアルゴリズムだし前月も今月も同じシフト(前月早番3回したのに今回もまた〜)が多いとかの不満もでない筈…?
只、何か抜けているというか穴があるような気もする(翌日のチェック機能は除く)。
それより実家の収穫に追われてソースを弄れない(;´Д`) アチャ-、指定勤務の事を忘れていた…
まだ勤務中なので帰ったら現行のパラメータ(曜日別のテーブル等)をもうちょっと見直して本当に修正が必要か考えてみますね
>>273 はいです とりあえずModuleFit内の関数fillKinmu→Call setHoliday(c_kinmu)一行をコメントにしてみたが、こっちの方が使い易い気がするんで試してみて
設定ファイルの職員情報内各シフトの最大回数、間隔は適切に近い形に変えるのも忘れずに コードが汚すぎて56意外にはメンテできないのが現状
駄目なら駄目と言え>>278 >>276
了解しました、変更して試してみます
設定ファイルのほうもしっかりと
>>277
自分ではとてもではないけど作れないのでありがたいです >>36
>頑張って一ヶ月くらいで作りたいですね…
1ヶ月たった現状で↑はどうなりましたか。 >>278
>自分ではとてもではないけど作れないのでありがたいです
ありがたいかどうかなんてどうでもいい。
駄目なとこは駄目とはっきり指摘しろと言ってるんだ。
56は駄目な所があっても、仕様がわからないが故に駄目かどうかわからないんだよ。 掘っても掘っても掘っても終わらないけど雨が強くなってきたので今日はもう止める(´`)
パラメーター値をウプしたしました
http://viploader.net/ippan/src/vlippan268959.jpgすまないが、まだガラケーのままなので画面コピーしたのを送ったけれど非表示の部分は早番を参考にして下さい
>>280 ダメというより運用しづらいのではないかと思う。具体的には後で述べるとして後は指定が入った時かな?3月か4月の各人の指定情報をUpしてもらっとけば考証も進んだと思うが >>281
君だれ?
駄目かどうかは>>278にしかわからないだろ。 4:3のスクリーンだとこれで運用するには、かなりきついものがある
メンバーのシフトをいじって確認の為に合計欄のある列へと行ったり来たり…
縮小表示にさせるとオサーンには見づらい
例えれば、お絵描きソフトで全体表示させつつ一部拡大が出来無かったら(全体表示画面と拡大画面を切り替えて操作、切り替えられた方は完全に隠れてしまう)と通じるものがあると思う←意味は通じるかな?
まあ278の所で運用できるDisplayがあれば良いだけの話なんだけど
※俺の職場では日勤、準夜勤、深夜のメンバーがほぼ固定だしシフトを組むのはお局様なので使いません 名前記入し忘れていた…
>282
確かに本人でなきゃわからないんだろうけど(職種も勤務体制も全く異なるし)
言い出しにくい&まだ問題点を把握しきれていないのかも >>284
> 言い出しにくい
作って貰ってありがたいとかいうことなんだろうが、現状のままでいいのか駄目なのか、
駄目ならどこが駄目なのか言わないとわからないということが>>278に通じない。 まだちょっとうまく使いこなせてないので指摘できるまでいってないです;
>>281
パラメータ値ありがとございます、変更しました
指定情報というのは希望休や希望勤務のですか?3月分なら手元にあるのでUPできます
まだ問題点把握しきれてないです…
まだ実行するとエラーが出るのが直せてないのです; >>279
しつけーなww
>>281
>掘っても掘っても掘っても終わらないけど雨が強くなってきたので今日はもう止める(´`)
農家? >>286
仕事の都合で毎度こんな時間での書き込みになってしまうけれど次のような形式で御願いしたい(Googledocは携帯で見れないので勘弁して下さい)
A 休み 5、9
有給 10、11
日3 13、18、24
日X 2、7
日Y 15
B 日X 2、15
:
:
X はその日の日勤者の中でなるべく後ろの方が望ましい場合
Y は特に指定番号なし
指定番号あり、X、Y以外のパターンがあればそのパターンも教えてもらえると助かる
>>287、いや竹林が有るだけ 18やVBAに精通している人も見ていると思うのでどういう時にエラーになるのか詳細な手順を書くのも忘れずに ちょうど書き込みあった時間に目が覚めた…
遅くまでお疲れ様です
A休み 2,4,20,23
有給 29,30,31
B休み 10,14,15,17,18,29
C休み 10,17
Dなし
E休み 24,31
F休み 2,3,10,11,29
Gなし
H休み 16,17,18
I休み 3,4,8,13
J休み 3,8,9
K休み 4,25
L明けか休み 5
Mなし
N休み 3,4,10,11,17,18,24,25,31
O休み 11,15,25
P休み 5,26,27
有給 23
以上が3月の希望勤務の申請になります 書き忘れた
Oは水曜、土曜が毎週休み
Pは土日祝日は全て休み
に加えて上の休日希望です 有難い。朝が早いのでもう寝るけど後で実行してみます この時間に寝て朝が早いんだ…
いつもありがとうございます、頑張ってください >>286
> まだちょっとうまく使いこなせてないので指摘できるまでいってないです;
わかんない奴だね。
「使いこなせない」のは何故なのかも有用な情報だというのに。
それと、とりあえずは結果は得られるわけだろ?その結果がどうなのか評価しろって。 間違えて本体消してしまった。。。
またいつでもいいので>56再うpしてくれるとありがたい >>290-291の内容でTRYしたら"日勤の割り当てで失敗"のメッセージがでるね
直接の原因は3日に日勤者5名を確保出来なかった為(夜勤、明け、早番で既に5名必要)
そもそも1日に夜勤の割り振りが上手く行っていないということで嘱託の西田さんを夜2(職員設定の休み間隔は7)に指定してみたが、やはり同メッセージと指定そのものが取り消され空欄になってしまう 指定解除ボタンを押した時のエラーは
× Formula1:="=勤務番号"
○ Formula1:="勤務番号"
にすれば直る >>295
だから作ったのは俺じゃないし、ネットにも繋いでないとry
>>299
色々試した結果、一旦選択されたセルをActiveにするといいみたい
If Not Application Intersect…
rng.Activate
rng.Validation…←エラー行
>>278は>>296的なのにはどう対応した? 自分はそこ対応できてないです
自分は同じようにやると'指定勤務の反映の
kinmuban = base_kinmu.Offset(r_adjust_kinmu + r_kinmu, c_kinmu)
でエラー出てしまうので… >>301
エラーメッセージの内容がわからないのでブレークポイントに設定して値を確認すると
r_adjust_kinmu = 2
r_kinmu = 1
c_kinmu = 43
後モジュール変数の初期化でbase_kinmu = ws_kinmu.Range("A6")をセット
仕事に行きます 過去スレを読み返していたら>>207のエラーの事?
EOMONTHワークシート関数を使用しているのでツール→アドイン→下の方にある「分析ツール」のチェックボックスにONにする
(俺が組み込んだのが6年前なので自信がないけど)
該当月の最終日(2月の最終日が28、29日かも含む)を判定するのに非常に便利な関数なんだけれどもExcel2000では標準として組み込まれていない この程度の関数で、明示的な追加インストールが必要な分析ツールなんか使うなよ =DATE(YEAR(A1),MONTH(A1)+1,0)
みたいでもいいんじゃね >>305
この程度の言語によらない常套手段も知らないの?
大抵の言語では日付けの加算減算ができる。
当月最終日=翌月1日の日付け-1日だ。
VBAでどう書くかは自分で調べろ。 6年もExcel/VBA使っててこのザマかよ
才能ないよ >>307
>VBAでどう書くかは自分で調べろ。
その程度のこともわかんないの?なら黙ってろよw >>306の意味がわからなかったのかな?
「(今月+1)月0日目」で今月末だ >>309=>>56かw
ゴミだのクズだの言われて悔しいのぅw 呼ばれているようなのでレスしようとしたが、何度も間違えて消してしまっていたので放置してしまった…
2007から?EOMONTH関数は標準として組み込まれいるので>>18は知らずに使ったのではないのかな
俺の時はExcelの勉強中(アドイン何それ?美味しいの?)で分析ツール-VBAと一緒に組み込んだんだけど>>278は治ったのかな?
>>268で日々の日勤者数=休みの人数が確定してないと無理ぽいなあとかいたけどよくよく見たら合計欄の下の行にエリアが設けてあるんだね
気づかんかったわ… なんだ、>>56はこの糞コードの作者じゃないのか。
勘違いしてた。悪い。ごめん。 希望休通りの勤務表が出来るかわからないから
なにがダメなのか知りたいのに、エラーで返す。
ここで人が足りないと表示するのがふつーなのに やっと筍掘りが終わった…
>>278は諦めちゃたのかな? 自分の実力では最早どうにもならないと理解しました…
本買ったり調べたりしながら作っていたけどここで他の方が作ってくれたようなものはとてもではないけど出来ないとわかりました;
勤務表以前に人数足りないとかいう話だったのは結局どうなったんだろう
278氏のレスが全然ないから
過労で死亡とか過密スケジュールを恨んだ同僚に刺されて死亡とかボケた老人に首を絞められて死亡とか
色々嫌な想像しちゃったよ そりゃ誰だって初めては、そうじゃないのかな
まあ初心者には高レベルなのは確かだけどね
見直しさせて貰っているけど今ひとつ勤務表作成のレイアウトが気に入らなくて悩んでいるんだよなあ
注、自動振り分けの方法は前に述べたやり方で、やろうと思っているんだけど >>319
やっと、>>45が正しかったことを実感したか。
経験者の言うことは聞いとくもんだぞ。 >>321
人数不足は何とか乗り越えてます
新人2人入って(一人は3月から研修)4月中には二人とも夜勤やれるようにまでなりました
ご心配?おかけしました;
>>322
高レベル過ぎますね…何とかなるなんて甘い考えでした
自分はレイアウトまで拘る余裕なかったので;;
自動振り分けはそれが一番よさそうですかね
>>323
否定できません 普通に発注したら幾らぐらいするんだろ
4人月で400万くらい?
Excelの単価相場知らないけど アルゴリズムとかちょっと考ようとしたけど
結構難しい部類に入るねこれ
ノウハウ無いと4人月じゃ済まないな だけどそんなにはかからないだろ
十数万はかかると思うが 有料の線ならパッケージ導入&カスタマイズ(設定)が一番安く上がると思う
要件定義から受け入れテストまでがっちりやったら時間かかるが
コーディングだけなら0.8人月くらいかな 有料で金払ってまでするもんじゃないだろ
楽にはなるだろうが278だって今手書きで出来てるわけだし 勤務表作る労力は半端ないから有料でも価値はあるよ
ただ勤務表作成はNP困難な問題だから
半端なものを作るより手作成の方がコストがかからなかったり
精度が高かったりする このスレに載ってる要件だけ見て
基本設計書書いてみたがもう力尽きた
この処理じゃうまく動かん気がするし
http://www.dotup.org/uploda/www.dotup.org2944558.jpg
3時間なにやってたんだorz 新しい案がでて来たみたいだね…
手作成はちゃんとした人が作れば良いんだけれど恣意的に作ったんでは無いかと(作成者にとって都合が良いとか)疑われ易く職場への不満要因のひとつでもあるからねぇ
http://n2ch.net/r/7I5-774F---VVR/welfare/1320418159/?guid=ON
しかし自分のセンスの無さに絶望(T_T)
今の勤務表作成シートの下にある日別の日勤割り当て数と日勤割り当て可能残数を上の行に持って行きたいんだけどレイアウトが小汚くなっちゃうよ ちなみにこの>>232で書いたアルゴリズムなら
(バグは少しでることを除けば)動作自体はすると思うけど
月末に行くに従って再試行の数が増大すると思う
それに休日を振り分けるアルゴリズムもrのパラメータが
職員の構成によってかなりピーキーになりそう
もうGWが終わるからこれ以上私は関わらないけど
計算量のことを考えると、
おとなしく手作成の補助ツール作った方がいいかもしれませんね
(ちなみに ×couter4C ○counter4Dでした) やっぱりお金をかけようと思うといくらでも高くなってしまうんですよね;
>>332
基本設計書…最近パソコンに触れてなかったから消えてしまってた;;
せっかく作っていただいたのに申し訳ないです><
>>333
こっちはなるべく皆が納得できるようなものを作ろうとしてはいるんですけどね;
どうやってもどこからか不満は出てきてしまう…
レイアウトは自分まったくセンスないので何とも(−−;
>>334
やっぱり月末の方は増えてしまいますよね
これに関しては仕方が無いのかなと思ってますが…
補助ツールって考えのほうがやっぱり多いのかな
どこまでを補助するかにもよりますけど>< 同じくDLし損ねた(T_T)
>>334-335 休日の振り分けが、かなり微妙になるのは気懸かりな問題の一つとして捉えてはいます
日毎の日勤者数を希望休、指定勤務の入力前後に確定すれば自動的に休める人数も確定するので一工夫すれば何とかなるのではと思っています
逆に日毎の日勤者数を確定せずに割り振りを行った場合、手作成でも後戻りの修正が多発して上手く行かないと思う 同じ30日でも日曜が4回の月と5回の月では曜日毎のデフォルトで設定しても必要な延べ人数は変わってくるし、行事に対応する増員、有休、研修等による減員も発生するかもしれない
これが割り振り前に決まっていないと自動にしろ手作業にしろ上手く行かなくなると思っています 筍…
農家か?
技術を持った人は必ずしもそういった職場で働いてるわけじゃないんだな >>336
手入力だと大体この曜日は毎週これくらいの人数だなって分かってるので
希望休が多ければその日は普段より一人ないし二人減らすようにやってます
そういえば確かに4回と5回で違ってきますね、まったく考えに無かった…
手入力はあんまり深く考えずに作っているので改めて問題点が出てくると悩みますね; @一月が30日の時、デフォルト値で必要な日勤者数が161〜164人(1日が土曜日から始まる時が最も少ない)
A実際の日勤者数=30×職員数(16人)−(公休+有休+研修の日数)−30×5(夜勤、明け、早番)
@−Aの差が6以上あると後から調整しようとした時にシフトに偏りが出たりしやすい(突拍子もないところで5連続勤務とか、あるシフトは一回だけとか)のではと思っている
さらに行事がある月は特に酷くなるのでは 話は変わるが>>290-291で提示してもらった3月の希望休の情報より
1日 I、N
8日 B、C又はB、F
15日 C、N
29日 E
の夜勤が強制的に確定するようなのだが、どういう感じで反映させるべきなのかでも悩むんだよなあ
指定ボタンを押された時に赤の太字で表示して作成者に注意を促すようにしたほうがよいのかな 8日はB、Fさんの組合せによる夜勤かな
何とはなしに思ったが希望休の情報からC、Fさんの仲が悪いのは勤務表の作り方が原因の一つ? >>340
普段はあまり研修はないですし(特に最近まったくないな…)有休もそんなに多く使われないので
結構差が出てしまうように思います
行事の月が問題かもしれないですね;
赤の太字は確定するようなときかな?あったほうが分かりやすいのかなとは思います
B、Fの夜勤ですね
C、Fが仲悪いのは単純に相性の問題ですね;なるべく気づいたときは日勤でも2,3を組ませないようにしたりはしていたり… 日勤のAとBも避けたい(何処が問題になるのか不明)とするなら片方が夜勤と早番の組合せも良くないのと思うので避けるべきシフトのパターンをもう少し詳しく
自動振り分けによっては風呂介助のある日に女性職員だけになったりとかもまずいのかな?
風呂介助の中はずぶ濡れ?になるので男女のペアは避けたいとかとかもあるのかな(そもそも中介助と外介助が漠然としたイメージしかもてていない)
中介助…体洗いの手伝い
外介助…着替えの手伝い
足腰が弱って自力で湯船に出入りできない老人とかもいるんだろうけど中介助は基本2名だっけ? 日勤ABは午前に排泄で二人で仕事を回すため、同じ理由でCDもお風呂の中介助で一緒になるため変えれるなら一緒にならないように気をつけたりしています
でも夜勤ほど長くいるわけではないですし、他の職員もいるのでABなどで一緒になっても夜勤ほど重要視はしていませんが
お風呂介助は女性職員だけでも問題ないです(昔は男性職員ほとんどいませんでしたし…)
中介助は防水?エプロンをするのでずぶ濡れになるということはほとんどないですし、男女ペアも問題ありません
中、外介助それで合ってます。手伝いではなく介助にはなっていますが;
足腰弱い人は座ったまま入れるお風呂(機械浴槽)で入るので中介助二人です
機械浴槽は月曜、火曜、木曜、金曜で普通の歩いて入れるお風呂が水曜、土曜です
歩いて入れる人のほうが自立していて介助が少ないため、外介助は一人でも大丈夫だったりします(土曜日など) 休みの扱いは公休と有休しか提示されていないので
振休、特休(忌引、産休、育休等)は勤務表上での入力、表示及び集計欄の扱いはどうするものなの? Excelではないがワイズシステムさんが作ったシフトマネージャーの操作マニュアルを見ると>>278の要望に近い感じがする(実行は起動時にエラーが発生してできなかった)
Excelだと此処迄の物を作るのは無理だけど参考にはなるのかな >>346
振休は決まった休みってあるわけではないので特にないです
忌引もほとんどが突然のものになると思うので急な休み(一人欠)になります
産休、育休はそこからずっとが休みになるので全部[休]で入れるかその人自体を一覧から消すと思います
>>347
多分それと思われるものを見つけましたが自分もエラーが出てしまいました >>347
失礼しました、エラーは出ましたが使えそうです
まだ少ししかいじってないので何ともいえませんが設定などは近いかもしれないです >>350
最小限の文字が違っとるがな(;´д`) >>350
障害大杉wwwww
ろくにテストしてないな 一応、上場企業なんだからExcelで有給管理はやめようよ どの道完成させられる人はいないんだから意見出しても無駄だぜ
そもそもExcelで勤務表作れる人なんてそんなにいるわけないんだし 何これ、制約プログラミング?
Prologに投げたら? そういえばBソフ板でも>>2みたいなの作られてたな
ちょうど質問が震災前、完成が震災後だったので、>>2の更に1年前くらいの話で
途中の機能追加から、震災への募金を条件として作ってあげるよっていうチャリティーみたいになって
メールでのやりとりになっちゃったから外野は途中までしか見れなかったけど、出来は良かったな
で、結局こっちは実用可能なものが仕上がったの? オブジェクト変数を上部の定義部分で定数(Const)として宣言したいのですができません。
どうやるのですか? 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
FOJZW ロリ顔のむっちり美女がチンポをしゃぶって大量の熱々精子をぶっかけられる こんなスレあったんだな。まさしくこういうのエクセルで作ったわ。
とある有名な肉体労働で、20人弱くらいの班なんだけど、早出あり、遅出あり、できる作業がそれぞれ違い、土日も出勤あり。
いろいろ調べて100パターンを競争させて優秀な上位個体から子孫を100個体作ってというのを100世代繰り返す形で作成した。
進化論アルゴリズムとか言うらしい。
土俵とルール作るからあとは勝手に進化しとけっていうプログラムの作り方は初めてでおもしろかった。
2000ステップくらいに収まったかな。 ■ このスレッドは過去ログ倉庫に格納されています