12/02/21 14:52:13.46
これまでの流れ1
278 名前: デフォルトの名無しさん [sage] 投稿日: 2012/02/19(日) 11:10:34.97
今特別養護老人ホームに勤めていて、頭を使って手書きで勤務表を作っています
ExcelのVBAで自動で勤務を割り振ってくれる勤務表は作れますか?
320 名前: 278 [sage] 投稿日: 2012/02/20(月) 22:29:35.78
説明難しいですね…
早番=1番と考えていただければいいです
平日7番までというのは日勤者(2番~7番の6人)です
今現在は正職が13人、嘱託が1人、パート2人、(関係ないけどお掃除さん1人)
ただ3月で正職と嘱託が1人ずつやめます
パスは vba です
これは勤務表
URLリンク(www.dotup.org)
勤務表の一番右になります
URLリンク(www.dotup.org)
これが当番表になります。
実際作りたいのはこっちで考えています
URLリンク(www.dotup.org)
3:デフォルトの名無しさん
12/02/21 14:54:26.54
これまでの流れ2
329 名前: デフォルトの名無しさん [sage] 投稿日: 2012/02/20(月) 23:43:30.36
278番様向け 勤務シフト表入力支援システム要件書 (ドラフト2)
1.職員の種類
正職、パート、嘱託などがあり。
人によって可能な「勤務」に違いがある。(パートは日勤3番以降※のみ。)
※ 人によっては日勤4番や5番しかできない。
2.勤務の種類
早番、日勤(2番~10番)、夜勤1、夜勤2、明け、休み、有給、研修などがある。
同じ種類・番号の勤務(および休み)はなるべく連続しないように。偏りのないように。
最低限必要な1日の勤務人数は
早番、日勤(2番~5番)、夜勤1、夜勤2、明け、明け、休み、休み
の11名。(休み2名は前々日の夜勤1、夜勤2。強制。)
3.早番
別名1番。
4.日勤
2番、3番・・・と(行事などの日)10番ぐらいまである
平日は大体6番、7番以上まで欲しい(希望休が重なるなどで5番までのこともあり)
土曜、日曜日は4番、5番までなど少ないことが多い
つづく
4:デフォルトの名無しさん
12/02/21 14:54:54.83
これまでの流れ3
330 名前: デフォルトの名無しさん [sage] 投稿日: 2012/02/20(月) 23:44:17.04
つづき
5.夜勤
夜勤ではペアを組ませられない組み合わせがある。
夜勤は基本連続しないように(夜勤、明け、休み、夜勤…可能な限りにならないよう…)
前の月の夜勤の明け、明け休みも考慮する
6.明け
夜勤の翌日は自動的に入る。
7.休み
正職、嘱託の休みは基本月10回。
月により前後することがある。(1年間の回数は決まっており、兼ね合いで調整。)
パートは人によって回数が違う。
パートには休みを全部自分で指定する人もいたり。
夜勤の翌々日は自動的に入る。
8.研修
出張による研修。多くても月1回1名程度。
9.有給
有給休暇。
5:デフォルトの名無しさん
12/02/21 14:57:47.64
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
6:デフォルトの名無しさん
12/02/21 14:58:33.82
ソフトハウスに頼めば5,6人月はかかるものを作って貰う乞食スレ。
7:デフォルトの名無しさん
12/02/21 15:36:03.82
Q1: 例えば三日ローテーションの場合(一人一ヶ月10ブロックに分けて考える場合)、一人目にどの勤務パターンを
設定するかのロジックを考えろ。
Q2: 一人目の勤務パターンを決定後、二人目の一ブロックの決定ロジックを考えろ
Q3: 以降、三人目・・・n人目と決定していき、全員分を決定する前に破綻したときのやり直し方法を考えろ
まずこれができないと、三日分の勤務ローテも組めない
8:278
12/02/21 19:27:56.36
ランダムに勤務を設定していく場合、Rnd関数を使って乱数を出していく方法くらいしか思い浮かばないのですが
これだと毎回それぞれに乱数を出さなくてはいけないしかなり処理がきつくなりますよね・・・
他にランダム性を持たせる方法ってあるのでしょうか?
9:デフォルトの名無しさん
12/02/21 19:29:46.78
きつくならないからそれでやれよ
10:デフォルトの名無しさん
12/02/21 21:28:11.82
いつまでも自動生成の方ばっかり追いかけるなよ。
ひとまずは入力支援を完成させることを考えろ。
そうしないと役に立たない表しか生成できない屑プログラムしかできないぞ。
自動生成の「条件に合致しているかどうか判定する部分」が
入力支援の主たる部分なんだから、そっから先に作る方法を考えろ。
11:278
12/02/21 22:02:36.20
そうですね、とりあえずは以前言われた
1.条件に合わないモノを検出する機能
2.一意で決まるモノを自動入力する機能(夜勤→明け→休み)
3.コンボボックスによる候補での入力(条件によってソートする。)
こちらを考えていきます
12:デフォルトの名無しさん
12/02/21 22:16:05.83
その3つが実は自動化に重要。
1.条件に合わないものを検出する機能
→ 自動化時に自動選択した項目が条件に合うかチェックするロジック
2.一意で決まるモノを自動入力する機能
→ ここですでに半自動化
3.コンボボックスによる候補での入力(条件によってソートする。)
→ 条件により近い候補を絞り込める = 自動化時の候補絞り込みに有効
コンボに入れる候補で、条件に一番近いものから1人を(ランダムで)選んで入れれば、自動化の入力ロジックになる。
13:デフォルトの名無しさん
12/02/21 22:26:14.46
まずは、「そこ」に入れてはいけない人の条件を考えよう。
「休み」に入れていけない人・・・なし
「早番」に入れていけない人・・・
「当日の他の項目ですでに入力されている」
「前日が早番」
「前日が夜勤1」
「前日が夜勤2」
「前日が明け」
こんな感じで・・・。
14:278
12/02/21 23:08:55.82
「早番」に入れていけない人
「当日の他の項目ですでに入力されている」
「1~5日前が早番」
「前日が夜勤1、夜勤2、明け」
「2番~10番」に入れていけない人(入れないほうが良い人)
「当日の他の項目ですでに入力されている」
「前日が同じ番号」
「夜勤」に入れていけない人
「当日の他の項目ですでに入力されている」
「3日前が夜勤1、夜勤2」
これくらいかな?
15:278
12/02/21 23:18:51.46
ふと思ったのですが条件に合わないものを検出する機能というのは
あらかじめ手入力で勤務表を作ったうえでおかしいところを探す
というものであっているでしょうか?
16:デフォルトの名無しさん
12/02/22 00:15:56.78
>>14
なしの項目も忘れずにね。
あと「明け」は当たり前な事ばかりかもしれないけど一応書いておいた方がいい。
誰かがメンテナンスする時に困らないように。
夜勤の条件に
「翌日が明け以外で入力済み」
「翌々日が休み以外で入力済み」
があるんじゃないかな?
休みとか研修をあらかじめ入力してる場合、チェック対象になるよね?
全体をブラッシュアップして仕様書としてまとめとくといいよ。
仕様書、システム要件書共に自分で管理するようにね。
あと、各条件について必須条件か努力目標か分かるようになんか方法考えて資料にしてみるといい。
17:デフォルトの名無しさん
12/02/22 00:21:30.47
>>15
うん。
基本的には 「指定したセル」のデータが条件に合致してるかチェックする を入力済みセル分実行することになる。
それ以外の方法で実装すると、自動化の際にプログラムが今から入力しようとするセルが妥当かチェックするのに使えない。
-----
入力画面について・・・
イメージは湧いてきたかな?
前月末から5日前までのデータのコピーも入力画面に入るようにするといいと思う。
なにせ、早番の条件に5日前のチェックがあるんだし・・・。
あと翌月初2日分も、休みの予約が入力できるようにして、チェック対象(チェックの比較対象)にすると良い。
18:デフォルトの名無しさん
12/02/22 02:03:07.89
とりあえず現状報告
URLリンク(www.dotup.org)
pass: vba
xlsmファイルです。拡張子を書き変えてください
勤務番決定シートでテストをしている段階
忙しいので続きはしばらくできそうにない
気長に…
19:デフォルトの名無しさん
12/02/22 04:54:52.81
>>18
余計なお世話かもしれないが
このファイルってスタッフの実名使ってない?
架空の名前なら問題ないけど、もし実名なら適当な仮名に
(むしろスタッフAとかスタッフ1とか抽象的なもの)
差し替えたほうが良いんでないかい?
もちろん名前出したって実害ないかもしれないが、
「ネット上に名前を出されること自体が嫌」って人も居るだろうしね。
20:デフォルトの名無しさん
12/02/22 05:11:28.94
なにこの私的なスレ
21:278
12/02/22 06:41:16.13
>>18
何でだろ・・・拡張子.xlsmに変えてもちゃんとならない
自分の現状…
URLリンク(www.dotup.org)
pass:vba
>>18さんの見ると自分が全然進んでないのがわかる;
22:278
12/02/22 07:30:56.32
失礼しました
Excelのバージョンが2000のままでした
23:278
12/02/23 00:06:38.79
ちょっと疲れて頭が回ってないので簡単な見落としな気もするのですが
Sub hayakakunin()
For c = 5 To 34
For d = 3 To 38
If Cells(c, d) = "早" Then
For e = 1 To 5
If Cells(c, d + e) = "早" Then
Cells(c, d + e).Interior.ColorIndex = 10
Else
Next
Else
Next
Next
End Sub
これだとNextに対するForがありませんと出ます
どこがおかしいのでしょうか?
24:デフォルトの名無しさん
12/02/23 00:14:18.80
原因は必ずしもFor Nextにあるわけじゃないよ
if then に対応する End if が無いときにもそういうエラーになる
(今回はそれが原因)
あと、For Next をネスト(入れ子)するなら
Next にも対応する変数を書いておくと間違いが分かりやすい。
Sub hayakakunin()
For c = 5 To 34
For d = 3 To 38
If Cells(c, d) = "早" Then
For e = 1 To 5
If Cells(c, d + e) = "早" Then
Cells(c, d + e).Interior.ColorIndex = 10
Else
end if
Next e
Else
end if
Next d
Next c
End Sub
25:278
12/02/23 06:56:07.66
End ifが入ってなかったからだったんですね…
全然気づかなかったです
ありがとうございます
26:デフォルトの名無しさん
12/02/23 11:03:46.02
>>21
こりゃ1年かかっても無理だろうな
27:デフォルトの名無しさん
12/02/23 14:41:14.89
これってよくあるんだけど、製品で売るぐらいのものなんだよね。
うちもナースの勤務表を作成/管理/運営するシステム作ってるが、
結構なお値段するし、それに見合った計算してる。
「Excelの勤務表」程度の言葉でごまかすのもなー。
28:デフォルトの名無しさん
12/02/23 15:58:07.31
Excelでコピペを駆使して入力して、シフト種別毎の集計とかを自動計算するシートを作るだけでいいような気がする。
29:デフォルトの名無しさん
12/02/23 16:44:24.47
基本ルールで自動配置したものを、人手で調整(ルール化しにくいもの、予定外イベントへの対応、クレーム対応)くらいならよく作るけどな。
逆に、特定職場のルールを全部プログラムしたら使い回しが効かない。
30:デフォルトの名無しさん
12/02/23 17:03:28.45
>>29
自分の職場専用のものを作ろうとしてるみたいだから、使い回しがきかなくても良いのでは?
31:デフォルトの名無しさん
12/02/23 17:18:25.72
Excelの勤務表程度をぼったくり価格で売りつけてるのがIT業界
32:デフォルトの名無しさん
12/02/23 17:22:35.04
それじゃ278が求めてるもの作って安く売ってやりゃいいよ。
使えるものなら買ってくれるだろ
33:デフォルトの名無しさん
12/02/23 18:10:37.15
>>31
っていうけど、本当に面倒なんだぞ。
一人シフト変更願い出したら、3人に波及して、さらに3人ずつに波及して、と、
全体が書き変わったりする事もあるし、逆に絶対動かせない人も居るし、
こいつとこいつは混ぜるな危険があったり、こいつは夜入れないけど、
x時間は確保して。とか、一歩判定条件間違えたら無限ループに入っちゃう。
ダイヤ変更プログラムなんかでもそうだけど。
でもまぁ各社ノウハウがあるから、そのノウハウを売ってるんだよ。
34:デフォルトの名無しさん
12/02/23 18:24:16.75
>>31
ぼったくり価格でも売れるんだから、キミも作ってそのぼったくり価格の80%くらいで売れば大もうけ出来るんじゃない?
35:デフォルトの名無しさん
12/02/23 18:45:14.87
ExcelはReactive Programingなんだが、手続き型言語みたいにパッケージ作ると確かに悲惨な事になるな。
36:278
12/02/23 19:16:39.66
頑張って一ヶ月くらいで作りたいですね…
製品として売っているものは本当に高いですよね
何万も出せないし、使いまわせなくても問題ないですし…
頑張って作っていくしかないですね
37:デフォルトの名無しさん
12/02/23 19:26:39.50
1人月!?
38:デフォルトの名無しさん
12/02/23 19:28:03.21
なんでエクセルにこだわってんの?
他言語ならもっと楽にできるだろ
39:デフォルトの名無しさん
12/02/23 19:32:18.22
自社のガソリンスタンド向けローテーション表(1店舗当たり7名までを手入力、勤務報告書作成機能付き)を作った時は半年位(業務外時間を利用して)かかったなあ
40:デフォルトの名無しさん
12/02/23 19:39:37.42
>>36
ひとけた万円で買えると思ってんの?
ってか、自分の時間単価とかかった時間掛けて、購入金額より高くなるようだったら、
早めに買った方が経済的だよ。それしか仕事無いんなら別だけど。
41:278
12/02/23 19:40:03.10
他言語の方が楽だったんですね…
半年?!ちょっと甘く考えすぎてました;;
42:18
12/02/23 20:58:05.61
>>41
1年くらいはみましょう
私がときどき(息抜き程度に)作業して
2ちゃんにアクセスできるときに
続きをアップロードします
278さんにお願いしたいのは、
要件を文書にしてもらうことです
私の理解では今のところ日勤はどれも
同じと思っています
勤務表の映像では日勤は同じ空欄になって
いるようでしたので。
仮に職員がAさんからPさんまでいるとして
それぞれ一人ずつの職員の条件も
書くようにしてください
文書に書かれていることをすべて満たせば
完成といってもいいくらいにお願いします
掲示板に書ける分量にはならないので、
要件の文書もどこかにアップロードしてください
43:278
12/02/23 22:16:26.26
気長に頑張ります
日勤は番号によって仕事内容が違い、曜日によっても少し違います
それも要件に書いておきます
勤務表は早番、日勤、夜勤、休み、有給、研修などを決めます
当番表が勤務表を元に番号を割り振っていきます。実際に作りたいのはこちらの当番表になります
条件など書き記してもう少ししたらアップします
44:278
12/02/24 00:25:26.09
要件の文書アップしました
URLリンク(www.dotup.org)
pass:vba
多分これくらいだと思いますが…
分からないところがあったら言ってください
45:デフォルトの名無しさん
12/02/24 10:08:35.56
1日何時間やって半年とか1年とか言ってるんだろう?
最低で1,000時間、満足できる自動処理ができるものは、2,000~3,000時間かかると思うぞ。
46:デフォルトの名無しさん
12/02/24 20:48:53.44
仕事の内容をまとめるとこんな感じか
チーフ業務…主任、副主任が担当
事務処理…主任以下4名程
記録係…正職員のみ(但し中級以上)
見守り…中級以上?
各種介助
雑務、清掃
組合せのパターンでいうと夜勤の主任、副主任のペアも駄目だし、どちらかが明け、休み、出張の場合片方が日勤②~が望ましい
また新人の場合も数ヶ月間は日勤扱いのみになるのでわ?
47:デフォルトの名無しさん
12/02/24 20:59:42.22
だいたい今手で計算してる事をそのままコードにするだけなんだから時間割作成者が書けば余裕だろ。
48:278
12/02/24 21:23:57.78
>>46
チーフ業務=事務処理になるかな
あと主任は3月で退職するからもう事務処理とかそういうのからは他の人に任せてます
なので副主任入れ3人でやってます
記録係りは嘱託、パートはできず、
見守りはパートができません
夜勤組み合わせで主任、副主任のペアは大丈夫です
あと二人とも休みというのもいつもあるので問題ないです
新人は数ヶ月は日勤で、他の職員につくことになるので
そこは手書きで追加にしようと考えています
49:46
12/02/24 21:33:36.28
新たな主任が別の部署から移動で配属される可能性は有る?
50:278
12/02/24 21:50:10.35
>>46
副主任が主任に、平社員か他部署から来る人が副主任になると思われます
でもあんまり主任とか関係ないかな
51:デフォルトの名無しさん
12/02/24 22:30:13.07
>>44
>>44
ありがとうございます
あと、当月の条件(Aさんは18日は休み、Bさんは20日は早番、
22日は、CさんDさんEさんは打ち合わせのため日勤、
24日は行事のため~~など)
も、どのようなものがどの程度、指定されるのか
要件書に書き加えてほしいと思います
また、
1.メニュー(新規作成ボタンや職員データ編集ボタン、その他条件ボタンなど)
2.新規作成ボタンを押す
3.何年何月と指定(デフォルトで翌月)
4.職員データなどを参照してブランクの勤務表を自動作成(式や条件付き書式あり)
5.当月の条件を入力(ブランクの勤務表に)
6.作成ボタン
7.勤務の空欄を自動で埋める(日勤の番号が2~7入ったもの)
8.乱数の種を変えたり、当月の条件を変えたりして試行錯誤する
9.5~8を繰り返す
10.気に行ったパターンの中から1つを選択する(最終的に手入力で修正しても良い)
11日勤の番号の入った勤務表を当番表に変換する
の流れを考えていますが、
11の変換のプログラムは易しいと思いますので
もし、余裕でできるというのでなければ
ここから作成してはいかがでしょうか?
それから、早番が5日以内にあればセルの背景を赤にする、
とかいうことは、条件付き書式で実現したほうが良いと思います
手入力でも使いやすいので。
好みの問題かも知れませんが
52:278
12/02/24 23:57:08.21
とりあえず・・・
>それから、早番が5日以内にあればセルの背景を赤にする、
>とかいうことは、条件付き書式で実現したほうが良いと思います
これを試してみようと思ったのですがうまくできませんでした
(セルH5で)=OR(C5="早",D5="早",E5="早",F5="早",G5="早")
これに加えて「H5セルも早番の場合」を付け加えるのがうまくいきません
53:278
12/02/25 00:08:53.70
>5.当月の条件を入力(ブランクの勤務表に)
というのがその月の希望休や希望勤務を入れる、ということでしょうか?
そうでしたら(Aさんは18日は休み、Bさんは20日は早番、22日は、CさんDさんEさんは打ち合わせのため日勤)
というのはそのまま希望勤務に入力して反映できればと思っています
(打ち合わせのところは適当に日勤の番号を考えて希望勤務に手入力)
行事のため~は別に「その日の必要日勤者数」みたいなものを作らないといけなくなると思うので
これも適当に人を選んで希望勤務に入力することになるかと考えています
>11日勤の番号の入った勤務表を当番表に変換する
ですが自分の考えでは7.で日勤の番号が2~7入ったものとなっているので
その時点で当番表になっているのかなと思ったのですが違ったでしょうか?
54:18
12/02/25 00:29:31.02
>>52
そこにAND条件を加えればいいだけです
私はMATCHをつかって
=AND(自己セル="早",MATCH(自己セル,自己セルの5コ左:自己セル)<6)
のようにしました
>53
勤務表に直接指定の勤務や休日を入力します
必要人数は18のように処理します
勤務表で指定の勤務を変えたり、その日の必要人数を変えたり
乱数の種を変えたりして、いろいろ試しながら作成するわけです
勤務表の形式の、縦が職員名で横に日付があり、セルに勤務番号
から、
当番表の形式、縦が日付で横に勤務番号があり、セルに職員名
へと変換するわけです
55:278
12/02/25 13:41:06.19
>>54
ANDを使ってできました
夜勤の次が明け、休みになっているかや夜勤の3日前が夜勤じゃないかも
同じように条件付き書式でやったほうがいいですかね
ただこれ全部のセルに一つ一つやるのは大変だ…
今使ってる当番表及び勤務表と同じように作っていただけているんですね…
ありがとうございます
勤務表→当番表に変換するように作っていきたいと思います
56:46 Excel2000使い
12/02/25 15:19:01.60
>>54じゃないので…
オートフィルで横は31日まで縦はメンバーの最後まで引っ張れば条件付き書式も展開されない?
57:18
12/02/25 20:28:12.02
>>55
条件付き書式については
私は範囲選択してから入力しています
条件付き書式のルールの管理であとから修正することも
あります
進捗は、まだ18以降作業していません
ただ、実務で使う書式は「なるべく」変えない方がいいとは思っています
あと、
1年後の運用を仮定して、実行環境と278さんの開発環境を教えてください
私は、主にVistaでExcel2007、サブに7でExcel2010を使います
58:デフォルトの名無しさん
12/02/26 09:09:59.36
まだ制約事項について俺の頭の中でまとまらない…
・パート2人以外に掃除人Qさんがいるんですよね
この3人は日曜出勤はあります?
後パートの方は労基法やパート側の税金対策で働ける日数制限があるのも頭が痛い…
・日曜の日勤でCDFM、CDLM等の組合せは今あります?また3月以降にこの組合せが発生しても大丈夫?まあBEFGHJKは他のメンバー及び新人二人が育つまではかなり負担がかかるなあ
59:278
12/02/26 11:32:35.44
明けの回ってない頭で失礼します
掃除人さんはまったく考えなくていいと思います
介助や見守りはできないです
3人とも日曜出勤はありますが、Pさんと掃除人さんは日曜にいることはまずないです
(本人休みも毎回希望するため)
パートさんは休みを全部指定するので、逆に指定休入っていないところは全部日勤でいることになります
CDFMとCDLM問題ないです
MやCとFなどは夜勤を組ませなければ大丈夫です
新人が育つまできついですね;
施設全体で今月1人やめて、3月で4人退職、ついでに1人只今妊娠中と…
これで入ってくるの2人って今から頭痛いですよ(--;
というか完全に回らない気がする…
60:18
12/02/27 00:42:10.91
テスト的に職員データ管理用のブックを作成中
URLリンク(www.dotup.org)
pass:vba
現在の実装済みの機能は、
職員情報シートからの読み込みのみです
プロシージャshowUserform_staffData()を実行し、
職員選択のコンボボックスで読み込む職員を選択します
61:18
12/02/27 01:58:40.24
一息入れると
>>60のユーザーフォームに
職員データの削除ボタンと
夜勤の組めない職員の解除のボタンが
ないことに気付きました
また、
278さんの要件の文書に書かれているものや
まだ書かれていない潜在的なものを含めて
要件を満たすために
このデータで十分なのかどうか分かりません
62:デフォルトの名無しさん
12/02/27 16:32:07.54
全然協力しようなんて思ってないけど、コード見た感想言うよ。
・情報を保存する場合は、以後どう使うかを考えてシートを分ける
個人的には、データを正規化しといた方がいいんじゃないかという予感。
全体を一覧して見るページが必要なら、それはそういうページを別途作る。
・空行を入れない
空行を入れるとoffset(0, 1)とか"+1"とか"-1"とか、本質的では無い位置指定がコードのあちこちに出てくるからね。
・悪いけど、コード読む気しない
引き継げないよ?
63:デフォルトの名無しさん
12/02/27 16:40:08.88
あと、やっぱ>>51の7~9と10の実現方法を先に考えた方が良くない?
UIなんて後付けでいいよ。実現の目処が立たなきゃ、苦労して作ったUIも無駄になるよ。
7~9でどれくらいの満足度のものを作るのかわからないけど、単純に組み合わせると10の数十乗のオーダーに
なるもののどれを10の候補とするのか考えなきゃ。
もうちょっと想像を進めれば、とてもじゃないけど例えば10通りの候補を選び出すのは大変で、
10通りに絞れたとしても、それが理想に近いか目で見て判断するの難しいよ?
15人*30日の450マスに理想と全然違うぐちゃぐちゃの10枚のどれがいいかなんて選べる?
64:デフォルトの名無しさん
12/02/27 16:44:04.91
そうそう忘れてた。
セル領域には名前を付けることが出来て、Range()はその名前を引数に指定できるから。
範囲に名前を付けてもいいし、データの塊の左上1セルに名前を付けてもいいよ。
65:デフォルトの名無しさん
12/02/27 16:57:40.18
>>62
それ以前にリアル業務が頭数足りないのは明白なんだからルール変更は普通にあるだろうな
業務体制を根本から見直す必要があるかも
66:デフォルトの名無しさん
12/02/27 17:22:40.25
>>65
あ、そうなの?
詳しく読んでないから知らなかった。
67:278
12/02/27 17:30:42.10
>>60
遅くなりました
職員情報管理すごくよくできていると思いました
データとして十分な気はします
あとは条件を満たした振り分けがうまくできるかどうかですが…
>>61
とても細かく指摘していただいてありがとうございます
自分だとそういったところに全然気づかないのでとてもありがたいです
ルール変更は多分ないと思います
人数最低限で何とか進めるしかないのかと…
68:デフォルトの名無しさん
12/02/27 17:40:31.46
>>67
> 職員情報管理すごくよくできていると思いました
> データとして十分な気はします
それマジで言ってんの?
人の増減とかがあったらどうすんの?
同じ名字の人がいたらどうすんの?
コード読めた?
ダイアログださいだろ。
つか、最初のシートに手入力が一番速くね?
69:デフォルトの名無しさん
12/02/27 17:50:37.31
絶対不可侵だと思いこんでいたルールであっても
相談あるいは交渉によってあっさり変更されてしまったりするのが
現実世界の理不尽さというか面白さだと思うんだ
一人で思い詰めてもよくないよ
70:デフォルトの名無しさん
12/02/27 17:56:35.53
>>67
> あとは条件を満たした振り分けがうまくできるかどうかですが…
なんかここ自動化できそうだとか思ってない?
まず無理だから。
71:デフォルトの名無しさん
12/02/27 18:20:25.55
>>60
マスタデータと、計算途中の値を保存する領域と、勤務表が確定した後のデータをごっちゃにしてるのが致命的。
72:278
12/02/27 21:23:00.17
>11日勤の番号の入った勤務表を当番表に変換する
もっと簡単な方法があるのかもしれませんが一応できました
URLリンク(www.dotup.org)
pass:vba
細かいところがなかなかうまくいかないです…
73:18
12/02/27 23:02:40.00
>>72
お疲れ様です
処理方法は変えていませんが、
・Option Explicit をつける
・Select Case を使う
・当番と職員名は変数にする
など変更してみました
URLリンク(www.dotup.org)
pass:vba
74:デフォルトの名無しさん
12/02/28 00:15:17.62
>>73
少し変えただけでだいぶ見やすくなりますね…
大好きなIfにとらわれずCaseも使っていくようにしなくては;
Option Explicitチェック入れ忘れてました、失礼しました
大変勉強不足で申し訳ないのですがCLngの長整数型に変換するというのはどういった使い方になるのでしょうか?
.Cells(h - 5, CLng(Right(touban, 1)) + 13) = staff
の辺りなどなぜこうできるのか分からなくて…
75:デフォルトの名無しさん
12/02/28 07:09:36.40
>>74
(あまり本質的なところではないと思いますが、)
"夜1"や"夜2"という文字列の右から1の長さの
文字列を切り出して("1"や"2")
それを数値に変換して13(マジックナンバーですが)
を足して当番表の該当列に合わせています
私はLongはVBAでは長整数型というより標準的な整数型として
使っています(4バイトの整数型という意味で)
明示的に数値に変換しなくてもVBAでOKかも知れません
自分が分かりやすいように
76:デフォルトの名無しさん
12/02/28 10:38:33.86
そこはvalの方がいいんじゃないか?
あくまで文字列を数値として解釈したいんだろ?
ってか、そこを含めて勤務帯マスタにしとけよ…マスタってなんなんだよ…
77:デフォルトの名無しさん
12/02/28 11:40:28.51
>>73
またまた無責任なコメント言うよ。
・range.currentregion.rows.countとかrange.currentregion.cols.countとか使おうよ
・基本的にselect必要無いから
78:278
12/02/28 13:59:44.52
>>75
そんな方法があったんですね、知りませんでした
Longもそんなふうに使えるとは…
ありがとうございます
79:42
12/02/28 14:02:31.42
他の人が言っているようにルール変更の危惧大ありなんだよなあ
とはいっても主任は夜勤禁止とかぐらいだろうけどメンバーがごっそり移動とかならよく有る事。
俺の元いた職場(ガススタ)での例(7時~20時営業、配達業務あり)
・A店(5名体制) 所長とベテラン2名が移動(新所長はスタンド経験無し、ベテラン、新人1名)
・B店(3名+アルバイト1名…半年前に採用) ベテラン2名入替(初心者と新人)またB店所長はC店所長も兼務していたが、そちらも移動あり)
文面から来月には新体制になるみたいだからそれまでは根を詰めずにね
80:デフォルトの名無しさん
12/02/28 14:08:53.94
ド素人の糞コード対ド素人の会話に口出ししたくてムズムズするは
81:デフォルトの名無しさん
12/02/28 14:10:06.65
月の途中で抜けたり、月の途中から入るってのは無いの?
82:56
12/02/28 14:16:12.52
>>79
42じゃなかったm(__)m
83:278
12/02/28 14:23:30.69
>>79
自分の職場はルールを変えたりするのを理事長(現トップ)が嫌うので多分ないとは思います
あった時は…大変ですけど;
>>81
月の途中で抜けたり入ったりはまずないです
84:デフォルトの名無しさん
12/02/28 14:40:04.17
まずない=ある
だな
85:70
12/02/28 14:43:31.96
俺のこと完全無視だけど、まじでこれを考えるのがプライオリティの最上位だから。
できるのかできないのか、やるのかやらないのか。
結局、全部Ctrl-C,Vでやるのが最速、ってことになるぞ。
86:デフォルトの名無しさん
12/02/28 16:16:27.89
>>84
ですよね
ルールが業務の継続に支障を来すようでは本末転倒というもの
87:デフォルトの名無しさん
12/02/28 18:40:19.02
278氏、コテハンにしておいて w
88:278
12/02/28 19:15:11.16
ただ今夜勤中でスマホからなので書き込みできません
代行お願いしました
>>84↓は違います
>>84
失礼しました、過去一度だけあったようですが、もしまたあったら調整するようにします
>>85
大変失礼いたしました
どちらでしょうか…
89:70
12/02/29 16:08:54.12
>>88
> どちらでしょうか…
何が「どちらでしょうか」なのかわからないけど、一番重要だけどわからないから考えることから逃げてないか?
実際にコード書くのなんかあとでいいよ。何をするかによって必要なデータもシート構成もかわるし。
> あとは条件を満たした振り分け
これやりたいの?やりたくないの?
やりたいなら、どのレベルで実現したいと思ってるの?
90:デフォルトの名無しさん
12/02/29 17:13:45.93
>>44 の要件定義が見れない
>>18と278だけで作るのか?
それならメール等でやり取りしてろ
多くの人の意見が聞きたいなら要件定義位はスレに書けよ
91:278
12/02/29 19:25:00.78
>>90
URLリンク(www.dotup.org)
pass:vba
こちらになります
92:278
12/02/29 22:20:48.92
>>89
振り分けが一番重要かなと考えています
93:デフォルトの名無しさん
12/03/01 13:32:59.78
>>92
一番重要なら、なんで>>91の「【プログラム的に欲しいもの】」には入れてないの?
それを、程度は別にして自動化したいのなら、その実現には全開発時間の80~90%位
かかるよ。
この自動化部分をこのスレの誰かに手伝って貰いたいなら、まずその部分の暗黙知を
形式知にしないと。
94:デフォルトの名無しさん
12/03/01 14:11:49.65
>>91
せめてDropboxの公開リンクかなんかにしろよ。ロダとか、流れる前提じゃないか。
95:278
12/03/01 16:06:05.97
>>93
すみません、勤務表をVBAで作る上で一番基本になることだと思っていたので書く必要は無いのかなと考えてました
具体的にどう形式知にするのがよいのでしょうか…
96:デフォルトの名無しさん
12/03/01 17:08:07.11
>>95
横レスだが、自動化の範囲とか優先順位を考えといたほうがいいと思う。
例えば、
・最小限の自動化:
次月のラフな割り当て案をルールから自動で作成。
あとは手で調整。
ただし矛盾してる可能性のある部分は表示。(夜勤明け後が休みになっていない、とか)
矛盾部分の表示を見ながら人間が再度調整。
調整に行き詰ったら、割り当て案を再度自動作成(手で調整した部分は消える)。
・もう少し広範囲に自動化:
手で1箇所調整するたびに、関連する割り当て部分を自動変更。
・徹底自動化:
後日の予定外イベント(病欠、異動、役割変更など)への耐性が最大になるプランを自動的に選ぶ。
(カーナビの自動リルートみたいなものを想像)。
など。
まあ、ここまでするのは実際大変だから、最小限の自動化で運用して、足りない必須部分を後付け出来ればいいんだが。
後付け容易にする設計自体がノウハウだから、どこまでやるかの見極めは確かに難しいね。
97:デフォルトの名無しさん
12/03/01 17:39:00.34
>>95
> すみません、勤務表をVBAで作る上で一番基本になることだと思っていたので書く必要は無いのかなと考えてまし
なんかそれ以外を一生懸命やってるから、やりたいのかどうなのかわかんなかったよ。
> 具体的にどう形式知にするのがよいのでしょうか…
とりあえず思いついた質問。
これまで作った勤務表は、全て【勤務表条件】を満たしているかどうか。
満たせなかったことがある場合は、どれを満たせなかったのか。
1ヶ月分の勤務表を作るのに必要な時間はどれくらいなのか(hourだよ)。
公開して問題ない過去の勤務表があれば、個人情報等を消して公開する。
従業員の満足度は、【勤務表条件】を満たしてさえいれば、どのようなものでも最高なのか。
次に、どうやって勤務表を作ってきたのか、その手順をざっくりと説明(200~400文字程度)。
他人に「一から【勤務表条件】を満たすものできる?」と言ってもそりゃわからないよ。
自分はおよそこういう手順で作ってるんだけど、自動化できる?であれば、相談に乗る人も出てくるかも。
【勤務表条件】をもっと明確にする。
たとえば、
「早番はなるべく間を5日以上はあける」というのは、最悪連続しても良いのか。
「勤務がなるべく均等になるように振り分ける」の「均等」とはどういう状態か。
とかかな。
98:デフォルトの名無しさん
12/03/01 17:45:07.03
>>96
> ・最小限の自動化:
> 次月のラフな割り当て案をルールから自動で作成。
実は「ラフな割り当て案」が一番難しいんだよ。
「ラフな割り当て案」=【勤務表条件】を100%満たしていない案ということだよね。
【勤務表条件】を100%満たせなければ、試行錯誤なりなんらかのアルゴリズムなりを適用して、
100%満たすものを作る、なら、実現方法は別にしてわかりやすい。
一部条件を満たしてなくて次に行くと、「早番はなるべく間を5日以上はあける」とかいう条件を
全然満たせなくなってくる。
満たせてないところを満たすよう修正すると、それ以降にも影響するでしょ?
だから、「マニュアルで修正可能なラフな割り当て案」というのはとても難しい。
99:デフォルトの名無しさん
12/03/01 17:50:14.05
そうだ、これも質問に追加。
これまでに試したことのある自動勤務表生成ツールはあるか?
あるとしたら、それを採用できなかったのは何故か。
100:デフォルトの名無しさん
12/03/01 17:58:34.97
>>98
>「ラフな割り当て案」=【勤務表条件】を100%満たしていない案ということだよね。
まあそのとおりなんで、最初から条件を全部適用するのは諦めて、実装しやすいところから出来ればいいんだが、という趣旨。
機能分離が簡単ではないのは承知。
101:デフォルトの名無しさん
12/03/01 18:14:13.36
すでに、この問題についてスレを読み、考え、書き込み、コードを書いた人ののべ工数は300人時(=2人月)くらいいってそう。
102:278
12/03/01 18:33:53.26
色々な意見ありがとうございます
>>99
これまでにツールを使ったことは無いです
単純に探してみて販売しているものがほとんどだったり、無料のものでも応用が利かない(自分の所では使用できない)ものだったからです
103:デフォルトの名無しさん
12/03/01 18:35:15.48
>>101
面白い現象だよな。
直接のメリットは何もないはずなのに。
ジェーン・マゴニガル 「ゲームで築くより良い世界」
URLリンク(www.ted.com)
>World of Warcraftのようなゲームはプレーヤーに世界を救う手段を与え、ヒーローの行動様式を
身につけるよう動機づけます。もしこのゲーマーの力を、現実の世界の問題を解決するために使えたと
したらどうでしょう? ジェーン・マゴニガルはそれは可能だと言い、その方法を説明しています。
104:デフォルトの名無しさん
12/03/01 19:26:14.98
>>102
>無料のものでも応用が利かない
>>91 のどれが出来なかった?
105:278
12/03/01 19:57:42.36
>>97
>これまで作った勤務表は、全て【勤務表条件】を満たしているかどうか
今までで年に3,4回は満たせてない月だと思います
夜勤、明け、休みのあとにまた夜勤と続いてしまうことがありました
>ヶ月分の勤務表を作るのに必要な時間はどれくらいなのか
そのときの希望休の数や、うまくはまるかどうかで変わってきますが
大体8~10時間(数時間*数日)かと思います
>従業員の満足度は、【勤務表条件】を満たしてさえいれば、どのようなものでも最高なのか
特に条件を満たしていなくても(夜勤が続いても)さほど文句はありません
逆に日勤(早番)が3日とか4日続いたあとの夜勤だったりすると少し不満(文句はないけど)があったりします
最高の出来、というのは今までなかなか無いと思います
106:デフォルトの名無しさん
12/03/01 20:09:06.54
スコア方式の方が良さそうだな。
107:278
12/03/01 20:28:57.69
>次に、どうやって勤務表を作ってきたのか、その手順をざっくりと説明(200~400文字程度)。
1.まず希望休、希望勤務を入れる(コレは固定)
2.前の月の夜勤を見ながら、夜勤を適当に入れていく
3.日勤の2番を夜勤に気をつけながら入れていく
4.早番を↑に気をつけながら入れていく
(これ以降日勤はとりあえず空白を入れる。番号を振り分けるでなく、日勤としておく)
5.行事など人の多く必要なところを入れる
6.それ以外の日に日勤を割り振る
7.この時点でおかしいところや組めないところ、偏っているところがあれば
一部入れ替える、ダメそうなら全体にごっそり替える
8.日勤の番号を偏りないように入れていく
9.最終確認。
希望勤務を確認→夜勤、早番、日勤の回数を確認→一人一人偏りを確認
→日勤の番号の偏りを確認
10.完成
という手順です
108:278
12/03/01 20:35:14.05
>>104
そもそも夜勤がなかったり、希望の勤務が入れれなかったり、可能・不可能な勤務が指定できないなどの理由からです
109:デフォルトの名無しさん
12/03/01 20:53:27.66
まぁベタだがPCにのみできるアルゴリズム。
まず、どの状態が良いか、悪いかという評価式を用意する。
たとえば、連勤=-10、などなど。
後は、
1.絶対動かせない人をまず配置する。
2.比較的動かせない人を、その枠にそって(たとえば火・金は勤務可であれば、どちらかに)あてずっぽに配置する。
3.そっから、あてずっぽうで余った人を置いていく。
それを、2を数10回、さらにそれに対して3を数10回ずつやる。
その中で、一番スコアの高かった表が、比較的よいシフト表な。
明らかに悪い表しか出てこなかったら、スコアの評価式変えろ。
ファジィ()。
110:デフォルトの名無しさん
12/03/02 01:08:27.99
VISTA, excel2000,モニター24
左上に貼りついている表をずらしてなんとかしたいが表をずらせない
マクロ、怪しいボタン、関数、リンクすべて消してくれ
セルの結合、色、多すぎる枠の太い線みんなやめてくれ
278さんがVBAの達人と理解したから再度アップ頼む
ボタンは、コントロールボックスのコマンドボタンを使って
プロシージャコマンドボタンクリックからスタートすると本に書いてあった
111:278
12/03/02 02:05:31.15
>>109
アルゴリズムはExcelでも出てくるものなんですね…
色々調べてみましたがかなり難しそうなので
教えていただいた手順を参考に試行錯誤を試してみたいと思います
112:70
12/03/02 11:17:19.83
乱数を使って条件にあうものを設定していこうとか、順に組み合わせていってチェック
しようとかする方法は無理だから。
勤務の種類が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:デフォルトの名無しさん
12/03/02 12:01:27.24
再帰も絞込みも禁止ならそのとおりだな。
114:70
12/03/02 12:40:11.81
>>113
再帰や絞り込みを使っても無理だって。
10人30日で300マスあるものの200マスが一意に決まって、残りの勤務の候補が3個に絞られたとしても、
3^100でだいたい10^46通り。
順に試していく方式だと、大体10^10位のオーダーにならないと無理。
なので、>>107のやり方をサポートする機能を実装するか、GA等を使って劇的に計算量を減らすか、
あるいは「ラフな割り当て案」を作れるとしたら、それを作るロジックを考えるのどれかしかないと思う。
115:70
12/03/02 12:49:13.89
勤務表の難しいところは、29日分まで完全にできても、残り1日分で詰んだら終わりって所。
では、どこかとどこかを入れ替えることによって残りを埋められる状態にしようとすると、
まずどれが入れ替えられるのかを探すのが大変。
結局普通にやれば、「順に試す方式」になってしまう。
かといって、残り1日分はマニュアルでやってね、ということにして良いかどうかが微妙。
実際にやればわかるけど、あちらを建てればこちらがたたず状態が続くだけになりがち。
ただ今回は、多少条件に合致しなくても、従業員が受け入れてくれるようなので、それが救いかな。
116:デフォルトの名無しさん
12/03/02 12:55:07.17
既存のパッケージはボッタクリ、まで読んだ。
117:デフォルトの名無しさん
12/03/02 13:05:07.84
>>111
大事な所を数ヶ所ぼかしてるが、これだけでもそれなりにいい表作ってくれるぞ。
118:デフォルトの名無しさん
12/03/02 13:08:12.51
>>114
ちょっとだけ言っとくと、常に全部のスコアは覚えなくていい。最高の表を覚えとく。
作成中に明らかに挽回不能なスコアになった時点でその表は破棄。
順に試すなよ。あくまでランダムだ。
一番マシな適当な表だよ。
119:70
12/03/02 13:44:24.32
>>109のようなやり方なら、乱数もいいかもしれないけど、日付順・人順に決めていく方式だと、
もうその方式自体が「順に決める」になっているので、あとは乱数を使っても使わなくても
たいした違いはないよ。
>>109はGA的なアルゴリズムで、確かにこれなら出来そうな気がしなくもない。
ちなみに、ちょろっと試そうかと思ったけど、>>90の要件読んでも早番が何人で夜勤が何人なのか
わからなかったので詰み。
120:70
12/03/02 13:47:29.97
勤務表は一ヶ月に一回作ればいいから、>>109で導き出したスコアの良いものTop10を残しつつ、
29日ずっと動かし続けて、30日目にそのTop10から良いものを選んで修正するというのもありかな。
121:278
12/03/02 14:11:49.91
様々な意見ありがとうございます
1日の組み合わせが10億通りとか273万年とか数字で表されると無理なんだってはっきりしますね…
結局どう進めていくのがいいんでしょうか;
>>119
順に決めるなら乱数は使わなくてもそんなに違わないんですね
早番は1人、夜勤1が1人、夜勤2が1人です
122:70
12/03/02 14:44:34.91
>>121
月~日の日勤者数を(8, 8, 7, 8, 8, 6, 5)に決めうちにしたとして、例えば月曜の組み合わせの数は
早番*日勤*夜勤1*夜勤2=16C1*15C8*7C1*6C1=4,324,320
と計算できる。
400万だから10億と比べるとかなり減った気がするが、1ヶ月分だと400万の30乗で約10^198通りなので、
順番に決めていく方式はやはり無理。
ちなみに、なんで組み合わせの数を計算しているかというと、実際にコードを書いて試す価値があるか
どうかを決定するため。
順番に決めていく方式は、どんなに上手くやってもまぁ無理。
123:278
12/03/02 15:09:13.63
>>122
やっぱり順番にというのは無理があるんですね…
アルゴリズムを使って最良の表を考えるというのが一番なのでしょうか
124:70
12/03/02 15:51:40.71
ひょっとして、誰かが自主的にコード書いてくれるのを待ってたりするの?
念のため言っとくけど、俺は書かないから。
暇つぶしに、ローカルで>>190の方式で実現可能性を見いだせるかどうかのテストコードを書いたりは
するかもしれないけど。
125:278
12/03/02 20:02:32.62
>>124
そこまでは思ってないですが、自分だけでは難しいなと…
皆さんが協力してくださるおかげでここまで来られてる状況ですから
テストコードでも見せていただけたらとても参考になると思います
126:デフォルトの名無しさん
12/03/02 23:41:42.27
>>109だが、やっとホテル帰ったから要件見ようとしたらまた流れてた。
>>119
出来そうな気というか、これに味付けしたものが売り物になってるからな。ソリューションとしてだが。
実際には特許ものの刈り込みとか、数学的・統計学的な式を使った任意の離散的だが偏りを持たせた2・3とか使ってるが。
127:278
12/03/03 00:06:14.75
>>126
流れるのそんなに早かったですかね…
やっぱり別の方法で上げておいたほうがいいのかな
URLリンク(www.dotup.org)
pass:vba
そこまで素晴らしいものは到底作れないですね;
128:デフォルトの名無しさん
12/03/03 00:19:57.36
トン。明日待機とかの暇な時間に見てみる。
129:デフォルトの名無しさん
12/03/04 01:27:23.78
>ひょっとして、誰かが自主的にコード書いてくれるのを待ってたりするの?
雑談しながら何もしないで待っているように感じる
データと条件を整理して常にUPしなければ無理と思うが
おもしろそーだから俺も待っている
>・各人の勤務ごとの月の合計(休、日、夜、明、休、有、研)を表示させたい
データを見て休の意味がわからない、日曜日は会社によって月曜日もあるが
休 日曜日、変更できる
休 日曜日、各人指定なので変更不可
休 研修なので変更不可
休 会社or法律による強制休日、変更不可
休 有給、変更不可
休 会社都合による有給、変更できる
win98.excel95でナンバーズを総当たりで解いたら
7分ぐらいかかった、上級者のコードを見たいので興味がある
130:109
12/03/04 01:49:33.92
今日地味に組んでみたが、VBAくそ遅い。VB6と変わらんやろと思ってたが、明らかに遅い。
最終的にbookが壊れたが、死ぬほど遅いが、ちょっと成果書いとく。
要件定義が甘いので、あてにしない。
各個人に、マスタとしてシートを定義する。
そのシートは、一月分の、
「入れない場所、絶対入る場所」を定義する。
横軸か日付、縦軸が勤務帯。朝、昼2~昼10、夜1,2,研修、休み。
休み、研修は予め、全員を「勤務不可」とする。その上で、勤務可のみマーク。
一発目、そのマスタを読んで、全体としての、シフト番号1~31x枠数(シフト枠n)に対する選択肢を決める。誰かの「絶対入る場所」にあたった枠は、他の選択肢を外す。
これから、ランダムで当て込んでいく。なお、一日に同じ人が働く事はないものとして、この時点で刈り込む。
一週間分を先ず決める。その一週間を基準に、個々人人に対して、一つ前のシフト枠に対して評価式のうち致命的ではないもののみ、ランダムで当て込んでいく。
ここでタイムアップ。お仕事してました。
131:デフォルトの名無しさん
12/03/04 01:51:39.38
>>130
コード上げろ
132:109
12/03/04 04:10:28.65
>>131
すまん。早めにそういう類のサイトにアクセスできる環境に行くわ。
DropboxもFWに蹴られるんよね。
133:デフォルトの名無しさん
12/03/04 09:17:39.57
>>130
えっ? ダメだったの?
全然試しもしないで
できるって言い張ってたのかよ
くそ迷惑な奴だなw
134:278
12/03/04 13:43:23.03
>>130
そんなに遅いものなんですね…
でもそこまで色々と出てくるとは;
どんなものか見られるの期待してます
135:109
12/03/04 13:59:27.36
>>133
うん、すまん!
.netなら多少早かったが、反則よね。
136:70
12/03/05 14:59:33.88
月に休みが10日程度ということなんだが、望ましい休みのパターンはどのような感じなんだろう。
それから勤務日と休日の割り振りはどんか感じが望ましいんだろう。
例えば、基本は2勤1休でその3日の繰り返しが良いとか、
基本は4勤2休でその繰り返しが良いとか、
休日は完全にばらばらの方が望ましいとか、
そういう基本的な理念がわからない。
>>109
セルを頻繁に更新してない?
Excelの機能が要らないんだったら、メモリ上であれこれした方が速いよ。
Excelの機能が必要だとしても、遅くて使い物にならないのなら、メモリ上であれこれする必要がある。
137:70
12/03/05 15:01:27.02
そうだ、有休の話が出てこないんだが、有休(やそれに類する休み)の扱いはどうなってるの?
138:デフォルトの名無しさん
12/03/05 17:45:39.21
>>130
なぁそれ本当に現実味があんの?
評価式さらしてみ?
139:デフォルトの名無しさん
12/03/05 17:48:27.21
>>136
普通は、あるリズムで繰り返されるのがベターだとは思うが、>>278の所はどうなんだろうねぇ
140:デフォルトの名無しさん
12/03/05 20:00:11.04
見たところ、やはり70さんが技術、経験ともに上級者といった感じだ。
短いテストコードでもいいし、過去に書かれたコードの一部でもいいので、ぜひ見せてください。
とても勉強になると思うので、よろしくお願いします。
141:278
12/03/05 20:17:50.77
>>136
休みは大体仕事の間に一日、たまに2連休(月1~3回程度)、稀に3連休(数ヶ月に1回)
理想としては月に2回前後連休、残りの休みは1日休みで振り分ける感じです
ただ希望休などで連休が多かったり(滅多に無いけど4回とか)逆に連休がない月もあります
>>70
扱い…例えば月10回の休み+有給です
他に何と説明したらいいか;
>>139
あんまりリズムとかないと思います。希望休を皆自分勝手に入れるので…
>>140
同意。見せていただきたいです
142:デフォルトの名無しさん
12/03/06 03:26:59.13
元スレの329=331(システム要件書 ドラフトを書いた者)だが、規制が来て書けなくなってる間に仕事が忙しくなってしまった。
で、自動化の方向性とか、その辺について書いてみようと思う。
(忙しくなってからはレス読めてないので現状はよくわからんが、役に立つことを祈る。)
その前に・・・278氏、トリップ付けるなり、別名付けるなりしないと、このスレの278なのか依頼人の278氏なのか分からなくなるぞ。
自動化の方向性だが、
・1項目づつ決定して行く(しかないよなぁ・・・。)
・条件に合う候補が無くならずに月末まで埋まればよい
・条件に合う候補が途中でなくなったら最初からやり直し(たとえば夜勤連続じゃないと埋まらないとか。)
1項目づつ決定する方法
・スタッフ全員に対して、その項目に対する適正度合を得点化する。
(資格があれば+50、前回勤務と重複してなければ+1、ペア勤務不適格者は-1、無資格なら-2000、既に入力されてる人は-1000とか。)
(全条件に対して評価の重み付けをする必要がある。上記は適当に作った例なので、実際の状況に合わせて練り直す必要あり。)
・同じ点数の人については乱数で順位付けする(やり直し時に同じ結果になりにくいように。)
(乱数を別項目にするか、得点を10倍とかして、1ケタ乱数を足しこむか・・・)
・得点1位のスタッフを項目に当てはめる
(基準点数を決めて、1位の得点がそれ以下の場合は条件に合う候補なしでやり直し。)
(手動入力の場合はコンボに得点の高い順にスタッフを並べればいい。)
時間が出来たらコードも書いてみようと思うが、今の所デスマ中なので期待しないでほしい。
143:顕正新聞 平成24年2月5日号「原発全廃特集号」
12/03/06 09:43:21.26
・原発は日本を滅ぼす、即時全廃せよ
・六ヶ所村再処理工場直下に二つの活断層
・耐震基準450ガルと、著しく耐震性に欠ける施設
・大事故が起きたらチェルノブイリを遥かに越す未曽有の大惨事が
・代替は天然ガス・コンバインドサイクルで十分
URLリンク(d.hatena.ne.jp)
144:56
12/03/06 11:45:00.24
流れはこんな感じで良いのかな?
①入力シートで行事日、各人毎の希望休み、研修日を設定し確定
②1~2日迄の明け、夜勤休みを自動設定して希望勤務詳細シートに内容をコピーしシート画面に移る
此処で更にシフト毎の出来ないパターン(日勤、夜勤、早番の三種類)を設定
③入力シートに戻して指定日(通常は1日から)希望勤務詳細シート、従業員相関シート(能力定義も此処で)曜日別人数表(最低)を元に最低人数分を自動振り分け
・行事日は曜日別人数に+2名自動追加
・振り分けで余った分はマニュアルで振り分けする
145:278 Excel2000使い
12/03/06 12:29:34.02
>>142
>その前に・・・278氏、トリップ付けるなり、別名付けるなりしないと、このスレの278なのか依頼人の278氏なのか分からなくなるぞ。
そうですね…名前は改めました
>・1項目づつ決定して行く
これは1日ずつってことでしょうか?それとも早番、夜勤…といった感じ?
得点化というのは前に出ていたアルゴリズムと同じようになるのでしょうか
それとも手順(コード?)は全然別なのかな…
>>144
流れはそんな感じですね
行事日の設定は日を設定かその日の日勤者数を設定するとどっちが早いのかな
最悪勤務指定で必要人数分の職員を適当に選んで日勤希望にしておくのがいいかと思ってたけど余計時間かかるようになっちゃうかな
行事日は+2名で足りない可能性があります
146:デフォルトの名無しさん
12/03/06 13:15:39.34
>>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とか
つまり、その勤務に適してるかどうかを数値化するの。
それで、その勤務に一番適してると数値で出た人を割り当てていく。
コンピュータは厳密にいうと数値の計算しかできない。
(文字の処理なんかは誰かが作ったプログラムで数値化してから行ってる。)
基本に立ち返って数値化するのが早道だと思うよ。
147:56
12/03/06 13:42:00.45
①1日分の自動割り振りの順序
夜勤1→日勤2→早番→夜勤2→日勤3~5→休み(夜勤明け、希望休含め5?名)→日勤6~
②・各担当は前日の担当の次席が基本で各能力の次席者がいなくなったら最上位者へ
例.夜勤1 A→E
夜勤2 B→F
日勤2 C→G
早番 D→H
・休日の処理
夜勤明け→5日以上連続勤務者→4日連続、3日連続の順で設定
・最低勤続者数、休日者数に達したら残りのメンバーは空欄としておく
148:70
12/03/06 13:43:01.18
>>141
> 理想としては月に2回前後連休、残りの休みは1日休みで振り分ける感じです
なるほど。これが理想か。
> あんまりリズムとかないと思います。希望休を皆自分勝手に入れるので…
ひょっとして、半分以上またはほとんどの休日をみんな事前希望してしまうのかな?
なんとなく、事前希望は、ひとりあたり月に0~2日位で、ほとんどの休日は自動割当
するのかなと思ってたんだが。
>>140
sourceforge.jpでとあるVBAのソフトを公開してるんだが、本名で公開してるのでここではちょっと…
あと、重ねて言っとくけど、この件に関しては絶対にコード書かないから。
書き始めてしまうと、40~50時間は持ってかれそうだから。
個人的には、いろいろと要件が明らかになってきて、「絶対無理」から「いけるんじゃない?」
くらいな気になってるよ。
149:70
12/03/06 13:53:15.62
想像してるんだけど、夜勤1と夜勤2は、まとめて「夜勤」として割り振って、
日勤3以降もまとめて「日勤」として割り振って(ひょっとして日勤2もあわせて「日勤」でいいかも?)
あとから割り振り直すというロジックじゃ駄目かな。
>>107で、何故日勤2だけ特別扱いしてるのかわからない。
つまり、自動割り振りは「早番、日勤、夜勤、休日」の4種類だけ。
これで夜勤禁止ペアや推奨ペアの条件をクリアできて、なおかつ日毎の勤務者数をクリアできてれば、
日勤内・夜勤内の役割分担は後付けでできそうな気がするんだが…
150:70
12/03/06 13:58:06.96
あと、>>278はわかってないと思うけど、これプロがやれば要件定義・設計(実現方法探索)をやってる間も、
1時間あたり3,000~5,000円位かかることなんだよ。
151:デフォルトの名無しさん
12/03/06 14:23:58.32
マウスで夜1を引張ってくればセルに
夜1.明.休と入るのは出来ないでしょうか
数字は打ったほうが速そうですが
30日の月で夜勤5回が3人なら、31日の月は5回が5人
休みと前月分をみればだいたいメンバーが決まる
パソコン手入力と当番表の作成に時間がかかっている気がする
過去のデーター呼出しもできてないと思う
152:70
12/03/06 14:56:34.87
>>151
> マウスで夜1を引張ってくればセルに
> 夜1.明.休と入るのは出来ないでしょうか
できるけど、そんなことしたいの?
夜1.明.休
夜2.明.休
と事前にシートの勤務表の外側に書いておいて、3つのセルをまとめてコピペすればすむじゃん。
153:109
12/03/06 15:57:36.40
>>150
結構安めだな。
俺は全日の枠を一次元配列にして、各個人に、対して、今の枠の番号と、次に入ってる枠との差の数字と、今の枠番号を枠数でモジュロとった数字組み合わせて評価式書いてた。
トライアルアンドエラーで、保存せんとガリガリ書いてたら無限ループ入っちゃってブレークも効かなくて飛んじゃったからソース無い。すまん>>138
154:70
12/03/06 16:10:37.70
>>153
そんな安くないと思うけどなぁ。一人月いくらでやってるの?
> 無限ループ入っちゃってブレークも効かなくて
ひょっとして、強制ブレークの方法知らないとかじゃないよね?
あと、実行する前にCtrl+Sしようよ。
155:デフォルトの名無しさん
12/03/06 16:38:24.33
>>153
DoEventsぐらい入れようや。
156:278 Excel2000使い
12/03/06 17:07:40.42
>>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
普通に売っているものが高いわけですよね…ここで関わっていただいている皆様には本当に感謝しています
157:70
12/03/06 17:17:22.11
>>156
> 上級者でも50時間もかかるんだ…これはホントに一年は軽く超えてしまう
いや、50時間でできるわけじゃなくて、50時間くらいはこの問題に費やしてしまいそうということ。
受託開発案件だとしたら、2~5人月じゃないかな。どこまでやるのかによるけど。
ちなみに、1人月はピンキリあるけど、50~90万くらい。
ただ、それは第三者が作るから時間がかかるのであって、同じプログラミング能力があれば
当事者ならもっと短時間でできる。
だから、どこまでやるかを決めて、まずコード書き始めて、で、わからないところを質問する。
VBAスレにあるような粒度の質問だったら、答える人多数だよ。
158:デフォルトの名無しさん
12/03/06 17:41:53.30
>>156
きっと有資格者と言ってるのは、その項目に対応できる人って意味だと思うよ。
たとえば
夜勤の項目の時、夜勤できる人+100、夜勤できない人-100とか。
早番の項目の時、早番できる人+100、早番できない人-100とか。
159:278 Excel2000使い
12/03/06 18:05:12.58
>>157
なるほど…
やっぱりもっとしっかり勉強しなきゃいけないですね、短時間でできるくらいに
>>158
そういうことでしたか、納得です
160:109
12/03/06 18:16:42.59
>>154
出先のPCだったからある程度作ったらソースだけコピペでメールで持って帰ろうと思ってたんよ。
文書保存も添付メールも監査対象だから。
強制ブレークってcrtl+Breakか?あれ止まるときと止まんない時があるぞ。
161:70
12/03/06 18:32:39.50
そう、Ctrl-break。
で、止まらなければプロセスkillだけど、保存してないならアウトだな。
というか、ファイルの保存が禁止されてる環境でよくやるね。
キーストロークとかも監視されてたりして。
162:デフォルトの名無しさん
12/03/06 19:47:41.63
278さん
Excel2000って・・・
セキュリティ大丈夫?!
サポート切れて随分経ちますが・・・
278さんのファイル開くのが不安だ
それと、このプログラムはけっこう重い処理になりそうなので、
セキュリティと処理速度から考えて
はやく新しいPCを用意して下さい
このスレで、その名前は
悪意がある冗談か、非常識な迷惑かどちらかにしか思えない
163:デフォルトの名無しさん
12/03/06 19:55:37.41
>>162
Excel2000で作ったデータ(プログラム含む)だからと言って、2007とかで開けばセキュリティとか関係ない。
まあ、2000使い続けるのはオヌヌメしないけどね。
278氏、いっそOffice2010
164:163
12/03/06 19:58:34.66
途中で書き込んでしまったorz
いっそOffice2010Proでも買ってAccessでプログラミングした方が楽かもね。
ExcelよりはAccessの方がこういうのは得意分野だから。
慣れないと何にもできないけど・・・。
165:デフォルトの名無しさん
12/03/06 20:01:56.63
非ITの零細職場ならExcel2000とかよくある話だろ
最新版Excelを都度当たり前に購入できるような職場なら手作りしなくても業者に発注した方が早い
166:278 Excel2000使い
12/03/06 20:39:26.48
昔うちにあったCD?から入れたExcelなので…
バージョンアップで2007にはなっているはずですけど;
職場が2000なので使うのならそちらも更新しないといけないですね
167:56
12/03/06 22:12:47.08
以前、連続日勤後の早番で不満があったりするとの事だったので振り分けの最優先に休み(先着n名分)を先にもってきたほうが良いのかもと思った
168:278 Excel2000使い
12/03/06 22:37:39.91
勤務が続くのを嫌がられます
なので日勤*3日→夜勤とかも少し嫌がられたり…これに関しては仕方ないので何度かありますが;
169:デフォルトの名無しさん
12/03/07 00:26:39.95
>>56は>>146的な自動化で良いと思ってる?それとも別の方法を考えてる?
>>166 278氏、開発用と運用用でバージョン違うんだとしたら数日に一回ぐらいは運用用で動かした方がいい。
完成して移したら全く動かないとかなると困るだろうし。
170:56
12/03/07 03:14:19.11
>>169
ちょっと複雑すぎるような気がする…
278氏以外の人が担当になってもローテーの組立が理解でき紙ベースで行なっても組立可能な事が良いように思われる
171:デフォルトの名無しさん
12/03/07 03:21:45.77
>>170
スコア付けずにどうやって自動化するの?その方法が気になる。自動化はしないの?
172:デフォルトの名無しさん
12/03/07 08:01:25.73
>>70
とりあえず1~2hでもコード書いてみて
コード書かないプログラマーなんて信用できんぞ
70もそう思わないか?
173:70
12/03/07 14:38:59.11
>>172
そう思うけど、俺自身は別に信用されたいなんて思わないのでどうでもいい。
このスレに居るのは、誰かが自動振り分けコードを提示して、へーすげー、やればできるんだねー
って思いたいだけ。
174:デフォルトの名無しさん
12/03/07 16:51:59.66
参考までにどんな感じで書き進めていけばいいのか一部でいいから教えて
175:70
12/03/07 17:23:33.21
俺が聞かれてるんだろうか?
どんな感じと言われても困るが。
176:デフォルトの名無しさん
12/03/07 18:02:55.88
そうですよね・・・ごめんなさい
177:56
12/03/08 04:10:38.67
>>171
スコアは付けなきゃいいでしょうね
ただ、それ以前の問題として設定表の構成で悩んでたり悩んでなかったり…(所詮他人事なので)
さらにいうと入力シートのry
もう一寸>>278の暗黙知を可視化しないとダメかな?例えば妊婦さんでも夜勤、早番ありでよいのか?別部署から移動したてのベテランでも夜勤~日勤2を直ぐに組み込んでよいのか(俺的には、こんなもの組むのはクソだと思うケド)
最高連続勤務日数は何日か新人2名に対して専任主指導者がつくのか人数は?
行事の予定が無くても繁忙期(月末、月初?)とかあるのか
行事によっては事前準備に結構な労働時間がかかるものがあるのか、同じ日に行事が重なった場合(敬老の日+誕生会とか)更に介護士の増員が必要なのか
178:56
12/03/08 04:52:27.86
一月分のローテー表を組むのは月末?月初?
恐らくは月初の2日か3日にならないと厳しい(変更が多発する)と見ているけど…
他にも確認しなきゃいけない事が多々あるような無いような…
179:278 Excel2000使い
12/03/08 07:50:37.41
>>177
>妊婦さんでも夜勤、早番ありでよいのか?
今いる妊婦さんは夜勤はやってないです(早番はやってるけど)
これは可能勤務で夜勤のチェックを外すようにすればいいかな
>別部署から移動したてのベテランでも夜勤~日勤2を直ぐに組み込んでよいのか
最初の一ヶ月程度は3番以降の日勤~、二ヶ月くらいから夜勤、2番に入ると思います
>最高連続勤務日数は何日か
早番を含めて3連勤+夜勤、明けで5連勤は超えないようにしています
ただパートさんは自分で休みを指定するので月に2回くらいは平日5連勤です
>新人2名に対して専任主指導者がつくのか人数は
別部署も人が足りなくなるのでこっちに来るのは1人だけと思います
専任というのはなく、その日その番号だった人につくというようになります。なのでパートさんにつくこともあります
これは最初の1ヶ月くらい(指導月)は初めから入れておかず、手書きで加えようと思っています
>行事によっては事前準備に結構な労働時間がかかるものがあるのか
あります。その場合日勤時間に数名(大体1~2人)抜けるので残った人数で仕事をまわしてます
>同じ日に行事が重なった場合
行事は必ずずらすようにしてくれているので更に人数が必要ということはありません
180:278 Excel2000使い
12/03/08 07:54:13.36
>178
指定休の締め切りが10日、そこから数日で勤務表を作って事務所へ提出
出来上がって配られるのはなぜか25日前後。毎月これくらいです
他にも確認すること…
181:70
12/03/08 11:08:55.98
>>180
> 他にも確認すること…
つか、これまで明らかになった/した仕様で仕様書を更新して、誰でも見れるところに
置いてくれないかなぁ。
Google Documentとか使えないの?
182:142
12/03/08 12:27:38.27
もしおまいらがそれぞれ勝手に部分部分のコードを書くとすると、
先に大まかな枠と分担とインタフェースを決めないと、つなぎ合わせてもうまく機能しない。
本当は278が自分である程度枠になる部分を作って、
部品をスレで発注・コンペする形式がいいんだろうけど素人の278にそこまで期待はできないな。
誰かが278の代わりにプロジェクト管理とドキュメント収集をやらなきゃまとまらないだろう。
本当は言いだしっぺのオレがやるべきなんだろうけどデスマ中。スマソ。
(現にデスマ前は勝手にドキュメント化してたわけだし。)
70が積極的にかかわるなら70にお願いするのも手かもね。
56はコーディング専門っぽいし。(ドキュメントの話あまりしないし。ユーザーSEかな?)
プロジェクト管理は胆だし、負担も大きいんで70に頼むのは気が引けるが、適材適所で考えると・・・。
183:278 Excel2000使い
12/03/08 14:11:23.96
>>181
これで見られますか
URLリンク(docs.google.com)
一応です、内容は同じ
URLリンク(www.dotup.org)
pass:vba
184:278 Excel2000使い
12/03/08 14:14:10.60
皆さんに手伝ってもらっている身で本当に申し訳ないのですが
明日の明けから3日ほど東北の支援ボランティアに行きます
遠いので帰ってくるのも遅くなってしまうと思います
スマホからスレは見れますが、多分まだ書き込みが出来ないと思います
何かあったら代行で書き込んでもらおうと思っていますが…
わがままを言って申し訳ないです
185:56
12/03/09 05:02:51.42
ドキュメントはガラケー(PDF可、写真は100KB迄)で表示出来れば助かります。m(__)m
因みにWIN98のノート(VGA表示)Excel2000使用でネット接続無しの環境で仕事ではコンピュータは使いません
>>180
>>2の写真をチラ見した時(上記理由で全部は表示されなかった…)1~31日までの表だったと思ったんだが提出する物は違うの?
>>184
〉東北の支援ボランティアに行きます←業務的にいうと休み扱い?研修?
研修旅行という名の慰安旅行とかあります?ある場合の扱いはどうしてます?
休みでないけれど休んだと見なしてくみこんでいるとか
186:56
12/03/09 06:16:30.46
>>278とのやりとりから現状、ローテーション表は大まかに3回に分けて作成(場合によっては2回)と考えてよい?
①前月末までに翌月の1~5日位迄
②月初めに12日位迄
③10日過ぎに残りの日数分
遅れたけど東北のボランティアご苦労様です。ケガや病気に気を付けて頑張って下さい(帰って来られてからで良いですよ)
187:デフォルトの名無しさん
12/03/09 06:28:36.76
>>186
どこからそう読めるの?
>>180に書いてある内容によると、
指定休(スタッフが希望する休み?)の締め切りが(前月の?)10日
そこから(作成期間)数日で勤務表を作って事務所へ提出
出来上がって(刷り上がって)配られるのは(前月の?)25日前後
って事でしょ?
10日の締め切りから遅くとも25日までに作成するって事なんじゃないの?
188:56
12/03/09 09:00:48.55
>>187
そうともとれるので確認事項とさせてもらったが俺的には下記の理由で>>186的な運用をしているのではないか?と思った
①278が別スレで最初に相談した時に1月分+翌月5日くらいまでとレスしている
②>>180に「なぜか25日…」と書いてある
何故?詰まりはそんな頃に配布されても意味がないという事?
③子供がいたり何かクラブみたいなのに所属していたりすればわかるが翌4月の予定なんて3/9日、今日現在わからないと思う
まあ通常は会社の定休日に合わせて都合をつけたりするものだが、その定休日が基本的にないので…
189:デフォルトの名無しさん
12/03/09 09:25:01.72
>>188
勤務表のある会社、4~5社に関わったが、
・勤務表の最後に翌月の最初数日を暫定(変更アリ)で入れるってパターンが多い。
・次にシフトを決めるのに休日や希望勤務の提出期限は前月の前半というパターンが多い。
・勤務表が決まった後の予定変更は勤務者同士での相談で入れ替えて上長に申請のパターンが多い。
自動化システムは頼まれないので作ったことはないが、これが普通だと思ってた。
190:70
12/03/09 10:31:03.88
>>188
これ以外には取れないでしょう。
5月分の勤務表作成スケジュール:
4/10: 指定休の締め切り
4/11~4/13: 278が勤務表を作成
4/13: 278が事務所へ提出
4/25: 事務所が全員に配布(4/13に出来てるのに、配布するのが遅い)
191:デフォルトの名無しさん
12/03/09 13:19:13.16
278さんに質問です
要件には日勤は10番くらいまであると書いてありますが
当番表には7番までしか項目が無いようです
8~10番はどのように記載されるのでしょうか?
8番については、7番の欄に一緒に「7番/8番」と入れるのかなと
思いましたが、9番、10番については、見当がつきません
192:デフォルトの名無しさん
12/03/09 17:48:48.36
テスト
193:278Excel2000使い
12/03/09 18:03:04.36
書き込めた
>>185
帰ったらガラゲーでも表示できるよう試してみます
勤務表は1~31日のものです
ボランティアは完全に個人的になので普通の休みです
研修旅行(一泊二日で)あります
研修は仕事扱いで休みとはまったく別です。ただ勤務としているわけではないので日勤などにも入りません
なので休み10日+研修2日になります
>>186
紛らわしい書き方ですみません
>>190で綺麗にまとめてくれた通りです
>>189
>>188
勤務表のある会社、4~5社に関わったが、
>・勤務表の最後に翌月の最初数日を暫定(変更アリ)で入れるってパターンが多い。
翌月はあまり考慮してません
>・次にシフトを決めるのに休日や希望勤務の提出期限は前月の前半というパターンが多い。
希望の期限はうちは前月の10日までです
>・勤務表が決まった後の予定変更は勤務者同士での相談で入れ替えて上長に申請のパターンが多い。
これはうちも同じです
194:278Excel2000使い
12/03/09 18:05:54.52
>>191
細かく見ていただいていてありがとうございます
10番であったときは(事務所がやってくれるのですが)8番と同じように7番の枠に8.9.10番も入れます
過去に11番までいたときは6番の枠にも入れてました
195:56
12/03/09 18:42:34.54
>>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さんは規定休数、休めなかった)
196:デフォルトの名無しさん
12/03/09 18:44:23.52
以前コテハンにしたらどう?と書いてあっさり無視されたもんだけどw
それ、全然ハンドルネームになってないというか、簡単に騙られるよ
ちゃんとしたトリップにしたほうが良いと思うんだが。
197:デフォルトの名無しさん
12/03/09 18:47:48.84
>>194
お忙しい中、お返事いただきありがとうございます
198:56
12/03/09 18:47:51.74
おろ、考えながら書き込んでいる内に>>278から解答があったみたいですね
スマホに変えようかなあ…
199:56
12/03/09 19:25:58.01
テキストはどっとあぷでもみれるんだけど大きな写真とかBookが取り込めなくてねぇ…
うーんと例えば2日日勤+研修2日後のシフトの扱いをしりたい(連勤3日の人がいたりする場合に休みの判定はどちらを優先しているのか、テキトー?)
後、他の人も言っているようにトリップをつけて
誰かがドキュメントに纏めたくても>>278のレスを追わなくてはいけないので(今のままだと全てのレスを読まないといけないので)
200:デフォルトの名無しさん
12/03/10 15:41:59.21
テス
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 |, -、_, - ゝ _|__〉、 〉
201:278
12/03/11 01:22:42.40
疲れて寝てしまってました…
>>195はよさそうかな
早番が一度多い程度はそのままでいいと思います
休みが回数分なかったら翌月に手書きで交代してもらい多く休んでもらいます
>>196
失礼しました
トリップつけようとしましたがうまくいきません(携帯からだから?)
うちのPCで書き込むときまで許してください
>>199
研修後は行事や予定、希望休による偏りなどがなければ次の日を休みにしようと考えています
研修も仕事と考えるので日勤などと入れて連続は避けています
大体てきとうです
202:18
12/03/12 00:53:55.91
うまく振り分けできてませんが、上げておきます
URLリンク(www.dotup.org)
pass:vba
忙しいので続きは、しばらく先になります
203:デフォルトの名無しさん
12/03/12 02:31:42.65
もう見れなくなっているし orz
204:デフォルトの名無しさん
12/03/12 07:53:42.56
テスト
URLリンク(viploader.net)
205:278
12/03/12 11:10:50.22
昨日帰ってきてそのまま寝てしまってました…
>>202
朝時間なくてちらっとしか見れなかったけど凄い出来です
もうかなり完成に近いんじゃないかな
また少ししか試せてないので帰ったらじっくり見させていただきます
>>204
②の回数制限は別にあるんですかね
あと新人や異動で来た人も夜勤1もやるかも
206:デフォルトの名無しさん
12/03/12 12:38:25.87
>>202,204は別人
ちょいと内容のまとめ直しと確認したくて上げてみた
207:70
12/03/12 18:02:54.47
>>202
ダウンロードして動かしてみたけど、エラーが発生したので報告。
1. 勤務表管理.xlsをオープン
2. [勤務表の作成]ボタンをクリック
3. [トライ!]ボタンをクリック
setPreFill()の
> kinmuban = base_kinmu.Offset(r_adjust_kinmu + r_kinmu, c_kinmu)
で、実行時エラー13。
コードは見てない。
208:278 ◆3HjE5W.53k
12/03/12 21:02:39.65
自分も色々いじっているとエラーが出ます
(ひな形開いた状態で勤務表管理の勤務表作成→いいえ。指定解除を押したときなど)
>>207のところを考えているのですが、素人には難しくなかなか分からない…
幸い続きは先になるようなので頑張って探します
209:デフォルトの名無しさん
12/03/13 15:48:03.50
あーあ、このスレも終わったな
よくあんな糞コード公表する気になるよな
今後はこの糞コードを軸に話が進むんだろうな
おい、そこの書かないより書いた方が偉いとか思ったお前、大間違いだぞ
210:デフォルトの名無しさん
12/03/13 15:56:49.57
なら他のやつもあげてみたらいいんじゃないかな
口挟むだけのは結局かけないんじゃない?
自分の案も出すくらいできるでしょ
211:デフォルトの名無しさん
12/03/13 16:32:40.21
まあ次誰かコード出したら、どっちも要件にあってなくて、コードが糞なので
いいとこ取りも出来なくて、ぐだぐだになるのは目に見えてる
次出す奴が完璧なの出せば問題ないがな
俺は無理w
212:70
12/03/13 17:40:23.30
わかった。分析ツールが必要なんだ。
どういうロジックで勤務表を生成しているのか、コードをちょっと見ただけではわからないけど、
これ、かなり良い線行ってるのかな?
ちょっとアドバイス。
ワークシート関数は段階的に計算結果を保存しながらやった方がわかりやすい。
例えば、
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。
これで、俺がこのスレに居る理由ももう無いかな。
213:デフォルトの名無しさん
12/03/13 21:50:39.80
ろくに動かん糞コード引きずってないで
無視して先へ進もうぜ
214:デフォルトの名無しさん
12/03/13 22:33:08.93
今後の流れだが、278がもっとガンガン書いていかんと全く進まんぞ
自主的に要件、設計、コードでも頻繁に書いて70他がアドバイス
周囲を巻き込み続けないとな
215:278 ◆3HjE5W.53k
12/03/14 02:40:51.53
とにかく色々いじって見たけどやっぱり難しい…
>>212
アドバイスありがとうございます
教えていただいたところ試してみたいと思います
大文字のほうが見やすいですね
>>214
ガンガン書いていかなきゃですよね;
でもUPしてもらったものもなかなか直せないしもっと勉強しなきゃ…
もっと頑張ります
216:58
12/03/14 04:30:21.38
明日、友人に頼んで>>18の内容をダウンロードしてもらうので宜しければ再Upお願いします
>>215
> とにかく色々いじって見たけどやっぱり難しい…
何が難しいのか、具体的に言わないと
①自動振り分けの結果はかなり悪い~良い?かなり良い?
②手入力による調整が難しい
・そもそもおかしな所をみつけるのに時間が懸かりすぎて難しい?(各人の休み、勤務種別毎の合計表示がないので278の頭の中で計算しないといけないとか)・一件の手入力に時間がかかる(特に日勤の入力等)や誤った操作で消してはいけない所を消してしまったとか
③初期設定(職員情報等)の変更、追加、削除に時間がかかるとか設定方法そのものがわかりづらいとか
217:278 ◆3HjE5W.53k
12/03/14 09:33:57.08
>>216
どちらかというと自分の知識不足でコードを読むのすら大変です…
もともと学校で少し習った程度しかVBAは分からないので;
本やネットで調べながらやってるから余計時間がかかってしまってます
218:デフォルトの名無しさん
12/03/14 12:04:52.04
途中で寝落ちしてしまった…
VBAは初心者レベルなので>>18のプロトタイプのコードの中身を理解するのに苦労しているという事ですね
そこは頑張ってとしか言いようがない
俺も初心者レベルでほぼ独学でExcelの使い方を学んで勤務表他業務用数本をVBAで組んだだけなので18のソースを追えるかちょっと不安><
219:デフォルトの名無しさん
12/03/14 12:31:05.55
読めない方が悪いのではない
読めないコードを書く方が悪い
220:70
12/03/14 12:55:12.89
正直、俺にも読めないよ…
221:142
12/03/14 13:16:26.42
ざっと眺めて読みにくいコードなのでやめた。
たまに覗いてるけど、70がいなくなったら終わりだな。
222:70
12/03/14 13:25:08.22
レガシーコード(テストの無いコード)のリファクタリング大好きっ子なんだけど、
人様のコードを勝手に修正するのもアレだし、時間も無いし…。
ステップ実行しながら追えば読めるとは思うよ。
223:デフォルトの名無しさん
12/03/14 18:29:27.87
まだDLしていない…
>>70,142さんが読みにくいと云うことはコメント類も殆どついてないのかな?
まあ>>18さんは振り分けの結果が満足のいくレベルか確認したくて超急ぎで作ったんだろうし(不満が大きければ振り分けのアルゴリズムを大幅に変更してもらえる?)
2000だとシート上に項目追加するだけでえらく影響が出たりするから(2007?からある程度連動するとか雑誌でみたような…)
俺的には名前と日別のシフト状況の間に休み、日勤、夜勤数等を列項目に
日の下に行事日区分、希望日勤者数、実日勤者数を行項目として表示させようかなあと考えていたので読めないと肉付けも難しいですよね
><
224:56
12/03/14 18:43:26.90
ガラケーだと書き込みにも条件が多すぎる… (;´Д`)
225:142
12/03/14 19:22:05.83
>>223
コメントは所々に入ってるよ。
ファイルがいくつにも分かれてて、あちこちのファイルにコードが分散してて読みにくい。
226:デフォルトの名無しさん
12/03/15 01:02:07.07
>>216
URLリンク(www.dotup.org)
pass vba
227:18
12/03/15 02:15:35.88
再Upとしてすぐ修正できるところだけ数行追加しました
・Sheet1で空セルが指定できるところ
・確認用に色付けしたまま、リセットやトライすると色が残ってしまうところ
URLリンク(www.dotup.org)
pass:vba
228:278 ◆KrUXNtvljU
12/03/15 21:58:59.19
>>222
人様のコード勝手にいじっちゃダメでしたかね;
まだいじったって言えるほど変わってないけど…
>>223
バージョンの更新?したから2007になってると思ってたけど、確認したら2000のまま…バージョン自体は変わらないのかな?
希望日勤者数の項目があれば行事日区分はいらないかもです
>>227
修正版ありがとうございます
まだ変更箇所確認してないのでこのあと確認させていただきます
229:142
12/03/15 23:08:41.84
>>228
依頼主がいじるのは別にイインジャネ?
230:56
12/03/16 04:07:35.03
>>226さん有難う。>>227の分含めてDLして貰えました。
今から見ようと思います。スレちになるけどスマホだとDLしてmicroSDにおとしてパソコンで見る事が出来るのかな?
電池の持ちが余りにも悪くて買い換えようか悩んでいるもので…
動画とか余り見ないしネットも2チャンくらいなものノートも一年以上動かしてなかったし (^o^;
231:デフォルトの名無しさん
12/03/16 04:14:12.59
>>230
スマホならできる
232:56
12/03/16 04:44:10.63
>>231 それなら買い換えてもいいかな
>>278さん、もう少し質問。
①嘱託の休みが多いのは事務所から働ける毎月の勤務日数或いは時間数の指示がなされている?
②パートの場合も同じ?
132時間以上で会社の社会保険加入義務(強制)が発生し主婦の場合118時間超で税金を納めなくてはいけなかったのを思いだしたものですから…
233:278 ◆3HjE5W.53k
12/03/16 22:23:09.37
>>229
そうですか、よかった;
>>232
パートも嘱託も休みの回数は年度始めに決まっています(事務所から回数書いた紙を貰う)
それも写真撮ってあとでUPします
234:278 ◆3HjE5W.53k
12/03/16 22:56:50.00
ウェブアルバムめんどそうだったのでアプロダですみません
URLリンク(www.dotup.org)
URLリンク(www.dotup.org)
PASS:vba
縦が名前、4~3月、合計、休み回数(8,9,10,11回)です
235:デフォルトの名無しさん
12/03/17 16:27:36.65
>>233
>ウェブアルバムめんどそうだったのでアプロダですみません
外注したらウン十万円のものタダで作ってもらっておいて
自分の骨惜しみは「面倒」だとかどんだけだよ
236:デフォルトの名無しさん
12/03/17 17:15:17.63
>>234
だからドロップボックス使えって言ってるだろカスが。
もう絶対コーディングしてやらん。
237:デフォルトの名無しさん
12/03/17 17:39:49.22
Googleドキュメントだと確かに面倒だったきがす
他のやつでうpすればいいんじゃね?
238:56
12/03/17 22:11:17.95
>>234
Uぷ、すいません。
まだ、ちょこっとしかみてませんけど、やっぱり休みの割り振りに偏りが出てるみたいですね(パラメータの連勤数を下げればかなりかわるかも)
239:278 ◆3HjE5W.53k
12/03/17 23:17:23.96
>>235
言葉足らずで申し訳ないです…
面倒なのは見るほうがなのでUPするのはすぐ出来ます
>>236
失礼しました、次からはドロップボックスを使うようにします
>>238
偏り出ますね;特にパートのPさんはなぜか月ごとに回数も変わってくるし…
家族での収入による調整だとは思いますが
240:デフォルトの名無しさん
12/03/18 08:13:54.88
>>278
要件の説明だけだとわからないので
実データをもとにしたデータを3年分ほど
上げてください
前提条件(指定休、希望休、指定休、希望休など)と
実際に作成した勤務表をできるだけ詳しく
お願いします
241:デフォルトの名無しさん
12/03/18 12:43:38.10
間違えました
指定休、希望休、指定勤務、希望勤務
です
242:278 ◆3HjE5W.53k
12/03/19 22:40:57.46
>>240
遅くなりました、過去の勤務表です
携帯で撮ったので画質が悪くてすみません
2010年3月~2012年2月までです
URLリンク(www.dropbox.com)
243:デフォルトの名無しさん
12/03/19 23:45:19.40
>>242
ありがとうございます
244:デフォルトの名無しさん
12/03/20 00:18:22.61
>>237
そうか?excelより簡単だぞ
245:デフォルトの名無しさん
12/03/20 01:15:22.48
ダウンロードしたの、ボタンを押して動かない
みんなテストできているのか
VBAを直すということは動いているんだろうな
246:デフォルトの名無しさん
12/03/21 14:40:55.11
過疎
247:278 ◆3HjE5W.53k
12/03/22 20:09:32.28
初歩的な質問で申し訳ないですが
セルAP5:AP34に乱数を配置したとして
その中の最大値のあるセルの行番号を求めるにはどうしたらいいのでしょうか?
248:デフォルトの名無しさん
12/03/22 21:13:45.13
>>247
本当に分からないんだったら
VBAでも何でもいいからプログラミングの本を読んで勉強した方がいいですよ
このレベルのことをいちいち掲示板で訊いていたら答えるほうも切りがないので
例えば一つのやり方として
・変数iを宣言 (カウンタ、行用)
・変数maxRowを宣言 (最大値のある行用)
・maxRow = 5 (初期値)
・for loop でiが6から34まで繰り返す
もし、Cells(i,"AP") > Cells(maxRow,"AP") なら、
maxRow = i とする
・for loop を抜けたら maxRow が最大値のある行番号です
これは、最大値がひとつの場合を想定しています
最大値が複数ある場合は、一番小さい行番号となります
249:278 ◆3HjE5W.53k
12/03/22 21:44:03.60
>>248
ありがとうございます
まだまだVBA勉強中でして、この程度のことも分からず申し訳ないです
250:デフォルトの名無しさん
12/03/23 14:48:24.81
なあ、最初の発言が2/19で、もう一ヶ月以上たってるんだけど、VBAの勉強は何時間したの?
正直引くわ
251:デフォルトの名無しさん
12/03/23 19:26:28.55
まぁ初心者が一ヶ月程度でできるほど簡単じゃないってことだ
252:デフォルトの名無しさん
12/03/23 19:41:19.03
エクセルでやるのかw
253:デフォルトの名無しさん
12/03/23 21:35:27.85
>>249
勉強中って・・・>>36この時の勢いはどこに行った?
254:デフォルトの名無しさん
12/03/23 21:58:06.61
そりゃま初心者じゃどれくらいかかるかなんてわかりようがないよな
255:デフォルトの名無しさん
12/03/24 03:01:52.71
むしろ1年とか言ってたのが1ヶ月でここまで出来てるなら凄いだろ
全部56がやってくれてるおかげだが
256:デフォルトの名無しさん
12/03/24 03:36:33.23
>>255
俺?なーんにもしてないよ
18が未完成とはいえ、あれだけ作り上げてると赤の他人としては一寸触れないもんね
257:56
12/03/24 03:46:10.38
ExcelVBAパーフェクトマスターくらいは持っておいて損はないと思う
(この本と後、500円くらいの雑誌2冊とマクロの自動記録とかで独学したなあ)
258:デフォルトの名無しさん
12/03/24 03:47:44.01
>>256
むしろ色々触ってっていいんじゃないか?ダメならうpしないだろうしその方が18も参考になるだろ
259:デフォルトの名無しさん
12/03/25 07:03:31.96
昨日、町の書店で見た【ExcelVBA逆引き大全 600の極意】この本良いかも
後、【続ExcelVBAのツボとコツがゼッタイにわかる本】(立山秀利 著)こちらは見たことないがスケジュール表の作成を主題にしているようですね
260:デフォルトの名無しさん
12/03/26 11:35:59.59
>>256
他人が触れないのは、コードが糞だから。本人は自覚あんのかな?
>>259
最初の一冊に「逆引き○○」とかは全然駄目。
素直に、VBAの基礎とExcelのオブジェクトの操作方法を説明してる本を買うのがいい。
261:209
12/03/26 13:27:28.22
な、俺の予想したとおりになったろ
俺は>>18のコードは仕様的に致命的な欠点(夜勤の回数を指定できない)があって使い物にならんと思ったんだが
278はどう思ってんのだろうな
262:デフォルトの名無しさん
12/03/26 15:17:40.19
>>261
うざいわ
263:278 ◆3HjE5W.53k
12/03/26 20:28:47.54
少し離れた町の本屋行ったけどVBAの本って全然ないんですね…
やっぱり大きい店に行かないとないのか;
パーフェクトマスター素直にネットで買おう
>>261
自分ではとても作れないレベルのものなので使い物にならないなんて思ってないですけど…
264:デフォルトの名無しさん
12/03/27 13:26:47.24
つまり、今までは勉強する気なんてなかったってことか
アホクサ