ExcelVBAで勤務表を作ろう

1デフォルトの名無しさん2012/02/21(火) 14:48:32.47
Excel VBA 質問スレ Part23からの移動

Excel VBA で勤務表を作るスレです

Excel VBA 質問スレ Part23
http://toro.2ch.net/test/read.cgi/tech/1327763113/

2デフォルトの名無しさん2012/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 です
これは勤務表
http://www.dotup.org/uploda/www.dotup.org2664409.jpg.html
勤務表の一番右になります
http://www.dotup.org/uploda/www.dotup.org2664415.jpg.html
これが当番表になります。
実際作りたいのはこっちで考えています
http://www.dotup.org/uploda/www.dotup.org2664419.jpg.html

3デフォルトの名無しさん2012/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デフォルトの名無しさん2012/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デフォルトの名無しさん2012/02/21(火) 14:57:47.64
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

6デフォルトの名無しさん2012/02/21(火) 14:58:33.82
ソフトハウスに頼めば5,6人月はかかるものを作って貰う乞食スレ。

7デフォルトの名無しさん2012/02/21(火) 15:36:03.82
Q1: 例えば三日ローテーションの場合(一人一ヶ月10ブロックに分けて考える場合)、一人目にどの勤務パターンを
設定するかのロジックを考えろ。

Q2: 一人目の勤務パターンを決定後、二人目の一ブロックの決定ロジックを考えろ

Q3: 以降、三人目・・・n人目と決定していき、全員分を決定する前に破綻したときのやり直し方法を考えろ

まずこれができないと、三日分の勤務ローテも組めない

82782012/02/21(火) 19:27:56.36
ランダムに勤務を設定していく場合、Rnd関数を使って乱数を出していく方法くらいしか思い浮かばないのですが
これだと毎回それぞれに乱数を出さなくてはいけないしかなり処理がきつくなりますよね・・・
他にランダム性を持たせる方法ってあるのでしょうか?

9デフォルトの名無しさん2012/02/21(火) 19:29:46.78
きつくならないからそれでやれよ

10デフォルトの名無しさん2012/02/21(火) 21:28:11.82
いつまでも自動生成の方ばっかり追いかけるなよ。

ひとまずは入力支援を完成させることを考えろ。

そうしないと役に立たない表しか生成できない屑プログラムしかできないぞ。

自動生成の「条件に合致しているかどうか判定する部分」が
入力支援の主たる部分なんだから、そっから先に作る方法を考えろ。

112782012/02/21(火) 22:02:36.20
そうですね、とりあえずは以前言われた
1.条件に合わないモノを検出する機能
2.一意で決まるモノを自動入力する機能(夜勤→明け→休み)
3.コンボボックスによる候補での入力(条件によってソートする。)
こちらを考えていきます

12デフォルトの名無しさん2012/02/21(火) 22:16:05.83
その3つが実は自動化に重要。

1.条件に合わないものを検出する機能
 → 自動化時に自動選択した項目が条件に合うかチェックするロジック

2.一意で決まるモノを自動入力する機能
 → ここですでに半自動化

3.コンボボックスによる候補での入力(条件によってソートする。)
 → 条件により近い候補を絞り込める = 自動化時の候補絞り込みに有効

コンボに入れる候補で、条件に一番近いものから1人を(ランダムで)選んで入れれば、自動化の入力ロジックになる。


13デフォルトの名無しさん2012/02/21(火) 22:26:14.46
まずは、「そこ」に入れてはいけない人の条件を考えよう。

「休み」に入れていけない人・・・なし

「早番」に入れていけない人・・・
 「当日の他の項目ですでに入力されている」
 「前日が早番」
 「前日が夜勤1」
 「前日が夜勤2」
 「前日が明け」

こんな感じで・・・。

142782012/02/21(火) 23:08:55.82
「早番」に入れていけない人
 「当日の他の項目ですでに入力されている」
 「1〜5日前が早番」
 「前日が夜勤1、夜勤2、明け」

「2番〜10番」に入れていけない人(入れないほうが良い人)
 「当日の他の項目ですでに入力されている」
 「前日が同じ番号」

「夜勤」に入れていけない人
 「当日の他の項目ですでに入力されている」
 「3日前が夜勤1、夜勤2」

これくらいかな?

152782012/02/21(火) 23:18:51.46
ふと思ったのですが条件に合わないものを検出する機能というのは
あらかじめ手入力で勤務表を作ったうえでおかしいところを探す
というものであっているでしょうか?

16デフォルトの名無しさん2012/02/22(水) 00:15:56.78
>>14
なしの項目も忘れずにね。
あと「明け」は当たり前な事ばかりかもしれないけど一応書いておいた方がいい。
誰かがメンテナンスする時に困らないように。

夜勤の条件に
 「翌日が明け以外で入力済み」
 「翌々日が休み以外で入力済み」
があるんじゃないかな?

休みとか研修をあらかじめ入力してる場合、チェック対象になるよね?

全体をブラッシュアップして仕様書としてまとめとくといいよ。
仕様書、システム要件書共に自分で管理するようにね。

あと、各条件について必須条件か努力目標か分かるようになんか方法考えて資料にしてみるといい。

17デフォルトの名無しさん2012/02/22(水) 00:21:30.47
>>15
うん。
基本的には 「指定したセル」のデータが条件に合致してるかチェックする を入力済みセル分実行することになる。

それ以外の方法で実装すると、自動化の際にプログラムが今から入力しようとするセルが妥当かチェックするのに使えない。

-----
入力画面について・・・
イメージは湧いてきたかな?
前月末から5日前までのデータのコピーも入力画面に入るようにするといいと思う。
なにせ、早番の条件に5日前のチェックがあるんだし・・・。

あと翌月初2日分も、休みの予約が入力できるようにして、チェック対象(チェックの比較対象)にすると良い。

18デフォルトの名無しさん2012/02/22(水) 02:03:07.89
とりあえず現状報告

http://www.dotup.org/uploda/www.dotup.org2669392.zip.html
pass: vba
xlsmファイルです。拡張子を書き変えてください

勤務番決定シートでテストをしている段階
忙しいので続きはしばらくできそうにない
気長に…

19デフォルトの名無しさん2012/02/22(水) 04:54:52.81
>>18
余計なお世話かもしれないが
このファイルってスタッフの実名使ってない?
架空の名前なら問題ないけど、もし実名なら適当な仮名に
(むしろスタッフAとかスタッフ1とか抽象的なもの)
差し替えたほうが良いんでないかい?
もちろん名前出したって実害ないかもしれないが、
「ネット上に名前を出されること自体が嫌」って人も居るだろうしね。

20デフォルトの名無しさん2012/02/22(水) 05:11:28.94
なにこの私的なスレ

212782012/02/22(水) 06:41:16.13
>>18
何でだろ・・・拡張子.xlsmに変えてもちゃんとならない

自分の現状…
http://www.dotup.org/uploda/www.dotup.org2669879.rar.html
pass:vba
>>18さんの見ると自分が全然進んでないのがわかる;

222782012/02/22(水) 07:30:56.32
失礼しました
Excelのバージョンが2000のままでした

232782012/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デフォルトの名無しさん2012/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

252782012/02/23(木) 06:56:07.66
End ifが入ってなかったからだったんですね…
全然気づかなかったです
ありがとうございます

26デフォルトの名無しさん2012/02/23(木) 11:03:46.02
>>21
こりゃ1年かかっても無理だろうな

27デフォルトの名無しさん2012/02/23(木) 14:41:14.89
これってよくあるんだけど、製品で売るぐらいのものなんだよね。
うちもナースの勤務表を作成/管理/運営するシステム作ってるが、
結構なお値段するし、それに見合った計算してる。
「Excelの勤務表」程度の言葉でごまかすのもなー。

28デフォルトの名無しさん2012/02/23(木) 15:58:07.31
Excelでコピペを駆使して入力して、シフト種別毎の集計とかを自動計算するシートを作るだけでいいような気がする。

29デフォルトの名無しさん2012/02/23(木) 16:44:24.47
基本ルールで自動配置したものを、人手で調整(ルール化しにくいもの、予定外イベントへの対応、クレーム対応)くらいならよく作るけどな。
逆に、特定職場のルールを全部プログラムしたら使い回しが効かない。

30デフォルトの名無しさん2012/02/23(木) 17:03:28.45
>>29
自分の職場専用のものを作ろうとしてるみたいだから、使い回しがきかなくても良いのでは?

31デフォルトの名無しさん2012/02/23(木) 17:18:25.72
Excelの勤務表程度をぼったくり価格で売りつけてるのがIT業界

32デフォルトの名無しさん2012/02/23(木) 17:22:35.04
それじゃ278が求めてるもの作って安く売ってやりゃいいよ。
使えるものなら買ってくれるだろ

33デフォルトの名無しさん2012/02/23(木) 18:10:37.15
>>31
っていうけど、本当に面倒なんだぞ。
一人シフト変更願い出したら、3人に波及して、さらに3人ずつに波及して、と、
全体が書き変わったりする事もあるし、逆に絶対動かせない人も居るし、
こいつとこいつは混ぜるな危険があったり、こいつは夜入れないけど、
x時間は確保して。とか、一歩判定条件間違えたら無限ループに入っちゃう。
ダイヤ変更プログラムなんかでもそうだけど。
でもまぁ各社ノウハウがあるから、そのノウハウを売ってるんだよ。

34デフォルトの名無しさん2012/02/23(木) 18:24:16.75
>>31
ぼったくり価格でも売れるんだから、キミも作ってそのぼったくり価格の80%くらいで売れば大もうけ出来るんじゃない?

35デフォルトの名無しさん2012/02/23(木) 18:45:14.87
ExcelはReactive Programingなんだが、手続き型言語みたいにパッケージ作ると確かに悲惨な事になるな。

362782012/02/23(木) 19:16:39.66
頑張って一ヶ月くらいで作りたいですね…
製品として売っているものは本当に高いですよね
何万も出せないし、使いまわせなくても問題ないですし…
頑張って作っていくしかないですね

37デフォルトの名無しさん2012/02/23(木) 19:26:39.50
1人月!?

38デフォルトの名無しさん2012/02/23(木) 19:28:03.21
なんでエクセルにこだわってんの?
他言語ならもっと楽にできるだろ

39デフォルトの名無しさん2012/02/23(木) 19:32:18.22
自社のガソリンスタンド向けローテーション表(1店舗当たり7名までを手入力、勤務報告書作成機能付き)を作った時は半年位(業務外時間を利用して)かかったなあ

40デフォルトの名無しさん2012/02/23(木) 19:39:37.42
>>36
ひとけた万円で買えると思ってんの?
ってか、自分の時間単価とかかった時間掛けて、購入金額より高くなるようだったら、
早めに買った方が経済的だよ。それしか仕事無いんなら別だけど。

412782012/02/23(木) 19:40:03.10
他言語の方が楽だったんですね…

半年?!ちょっと甘く考えすぎてました;;

42182012/02/23(木) 20:58:05.61
>>41
1年くらいはみましょう

私がときどき(息抜き程度に)作業して
2ちゃんにアクセスできるときに
続きをアップロードします

278さんにお願いしたいのは、
要件を文書にしてもらうことです
私の理解では今のところ日勤はどれも
同じと思っています
勤務表の映像では日勤は同じ空欄になって
いるようでしたので。
仮に職員がAさんからPさんまでいるとして
それぞれ一人ずつの職員の条件も
書くようにしてください
文書に書かれていることをすべて満たせば
完成といってもいいくらいにお願いします

掲示板に書ける分量にはならないので、
要件の文書もどこかにアップロードしてください

432782012/02/23(木) 22:16:26.26
気長に頑張ります

日勤は番号によって仕事内容が違い、曜日によっても少し違います
それも要件に書いておきます

勤務表は早番、日勤、夜勤、休み、有給、研修などを決めます
当番表が勤務表を元に番号を割り振っていきます。実際に作りたいのはこちらの当番表になります

条件など書き記してもう少ししたらアップします

442782012/02/24(金) 00:25:26.09
要件の文書アップしました
http://www.dotup.org/uploda/www.dotup.org2676715.txt.html
pass:vba

多分これくらいだと思いますが…
分からないところがあったら言ってください

45デフォルトの名無しさん2012/02/24(金) 10:08:35.56
1日何時間やって半年とか1年とか言ってるんだろう?
最低で1,000時間、満足できる自動処理ができるものは、2,000〜3,000時間かかると思うぞ。

46デフォルトの名無しさん2012/02/24(金) 20:48:53.44
仕事の内容をまとめるとこんな感じか
チーフ業務…主任、副主任が担当
事務処理…主任以下4名程
記録係…正職員のみ(但し中級以上)
見守り…中級以上?
各種介助
雑務、清掃

組合せのパターンでいうと夜勤の主任、副主任のペアも駄目だし、どちらかが明け、休み、出張の場合片方が日勤A〜が望ましい
また新人の場合も数ヶ月間は日勤扱いのみになるのでわ?

47デフォルトの名無しさん2012/02/24(金) 20:59:42.22
だいたい今手で計算してる事をそのままコードにするだけなんだから時間割作成者が書けば余裕だろ。

482782012/02/24(金) 21:23:57.78
>>46
チーフ業務=事務処理になるかな
あと主任は3月で退職するからもう事務処理とかそういうのからは他の人に任せてます
なので副主任入れ3人でやってます
記録係りは嘱託、パートはできず、
見守りはパートができません
夜勤組み合わせで主任、副主任のペアは大丈夫です
あと二人とも休みというのもいつもあるので問題ないです
新人は数ヶ月は日勤で、他の職員につくことになるので
そこは手書きで追加にしようと考えています

49462012/02/24(金) 21:33:36.28
新たな主任が別の部署から移動で配属される可能性は有る?

502782012/02/24(金) 21:50:10.35
>>46
副主任が主任に、平社員か他部署から来る人が副主任になると思われます
でもあんまり主任とか関係ないかな

51デフォルトの名無しさん2012/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日以内にあればセルの背景を赤にする、
とかいうことは、条件付き書式で実現したほうが良いと思います
手入力でも使いやすいので。
好みの問題かも知れませんが

522782012/02/24(金) 23:57:08.21
とりあえず・・・
>それから、早番が5日以内にあればセルの背景を赤にする、
>とかいうことは、条件付き書式で実現したほうが良いと思います
これを試してみようと思ったのですがうまくできませんでした
(セルH5で)=OR(C5="早",D5="早",E5="早",F5="早",G5="早")
これに加えて「H5セルも早番の場合」を付け加えるのがうまくいきません

532782012/02/25(土) 00:08:53.70
>5.当月の条件を入力(ブランクの勤務表に)
というのがその月の希望休や希望勤務を入れる、ということでしょうか?
そうでしたら(Aさんは18日は休み、Bさんは20日は早番、22日は、CさんDさんEさんは打ち合わせのため日勤)
というのはそのまま希望勤務に入力して反映できればと思っています
(打ち合わせのところは適当に日勤の番号を考えて希望勤務に手入力)
行事のため〜は別に「その日の必要日勤者数」みたいなものを作らないといけなくなると思うので
これも適当に人を選んで希望勤務に入力することになるかと考えています

>11日勤の番号の入った勤務表を当番表に変換する
ですが自分の考えでは7.で日勤の番号が2〜7入ったものとなっているので
その時点で当番表になっているのかなと思ったのですが違ったでしょうか?

54182012/02/25(土) 00:29:31.02
>>52
そこにAND条件を加えればいいだけです
私はMATCHをつかって
=AND(自己セル="早",MATCH(自己セル,自己セルの5コ左:自己セル)<6)
のようにしました

>53
勤務表に直接指定の勤務や休日を入力します
必要人数は18のように処理します
勤務表で指定の勤務を変えたり、その日の必要人数を変えたり
乱数の種を変えたりして、いろいろ試しながら作成するわけです

勤務表の形式の、縦が職員名で横に日付があり、セルに勤務番号
から、
当番表の形式、縦が日付で横に勤務番号があり、セルに職員名
へと変換するわけです


552782012/02/25(土) 13:41:06.19
>>54
ANDを使ってできました
夜勤の次が明け、休みになっているかや夜勤の3日前が夜勤じゃないかも
同じように条件付き書式でやったほうがいいですかね
ただこれ全部のセルに一つ一つやるのは大変だ…

今使ってる当番表及び勤務表と同じように作っていただけているんですね…
ありがとうございます
勤務表→当番表に変換するように作っていきたいと思います

5646 Excel2000使い2012/02/25(土) 15:19:01.60
>>54じゃないので…

オートフィルで横は31日まで縦はメンバーの最後まで引っ張れば条件付き書式も展開されない?

57182012/02/25(土) 20:28:12.02
>>55
条件付き書式については
私は範囲選択してから入力しています
条件付き書式のルールの管理であとから修正することも
あります

進捗は、まだ18以降作業していません

ただ、実務で使う書式は「なるべく」変えない方がいいとは思っています

あと、
1年後の運用を仮定して、実行環境と278さんの開発環境を教えてください

私は、主にVistaでExcel2007、サブに7でExcel2010を使います

58デフォルトの名無しさん2012/02/26(日) 09:09:59.36
まだ制約事項について俺の頭の中でまとまらない…
・パート2人以外に掃除人Qさんがいるんですよね
この3人は日曜出勤はあります?
後パートの方は労基法やパート側の税金対策で働ける日数制限があるのも頭が痛い…
・日曜の日勤でCDFM、CDLM等の組合せは今あります?また3月以降にこの組合せが発生しても大丈夫?まあBEFGHJKは他のメンバー及び新人二人が育つまではかなり負担がかかるなあ

592782012/02/26(日) 11:32:35.44
明けの回ってない頭で失礼します
掃除人さんはまったく考えなくていいと思います
介助や見守りはできないです
3人とも日曜出勤はありますが、Pさんと掃除人さんは日曜にいることはまずないです
(本人休みも毎回希望するため)
パートさんは休みを全部指定するので、逆に指定休入っていないところは全部日勤でいることになります
CDFMとCDLM問題ないです
MやCとFなどは夜勤を組ませなければ大丈夫です
新人が育つまできついですね;
施設全体で今月1人やめて、3月で4人退職、ついでに1人只今妊娠中と…
これで入ってくるの2人って今から頭痛いですよ(--;
というか完全に回らない気がする…

60182012/02/27(月) 00:42:10.91
テスト的に職員データ管理用のブックを作成中
http://www.dotup.org/uploda/www.dotup.org2686872.xls.html
pass:vba

現在の実装済みの機能は、
職員情報シートからの読み込みのみです

プロシージャshowUserform_staffData()を実行し、
職員選択のコンボボックスで読み込む職員を選択します


61182012/02/27(月) 01:58:40.24
一息入れると
>>60のユーザーフォームに
職員データの削除ボタンと
夜勤の組めない職員の解除のボタンが
ないことに気付きました

また、
278さんの要件の文書に書かれているものや
まだ書かれていない潜在的なものを含めて
要件を満たすために
このデータで十分なのかどうか分かりません

62デフォルトの名無しさん2012/02/27(月) 16:32:07.54
全然協力しようなんて思ってないけど、コード見た感想言うよ。

・情報を保存する場合は、以後どう使うかを考えてシートを分ける
 個人的には、データを正規化しといた方がいいんじゃないかという予感。
 全体を一覧して見るページが必要なら、それはそういうページを別途作る。

・空行を入れない
 空行を入れるとoffset(0, 1)とか"+1"とか"-1"とか、本質的では無い位置指定がコードのあちこちに出てくるからね。

・悪いけど、コード読む気しない
 引き継げないよ?

63デフォルトの名無しさん2012/02/27(月) 16:40:08.88
あと、やっぱ>>51の7〜9と10の実現方法を先に考えた方が良くない?
UIなんて後付けでいいよ。実現の目処が立たなきゃ、苦労して作ったUIも無駄になるよ。

7〜9でどれくらいの満足度のものを作るのかわからないけど、単純に組み合わせると10の数十乗のオーダーに
なるもののどれを10の候補とするのか考えなきゃ。

もうちょっと想像を進めれば、とてもじゃないけど例えば10通りの候補を選び出すのは大変で、
10通りに絞れたとしても、それが理想に近いか目で見て判断するの難しいよ?
15人*30日の450マスに理想と全然違うぐちゃぐちゃの10枚のどれがいいかなんて選べる?

64デフォルトの名無しさん2012/02/27(月) 16:44:04.91
そうそう忘れてた。
セル領域には名前を付けることが出来て、Range()はその名前を引数に指定できるから。
範囲に名前を付けてもいいし、データの塊の左上1セルに名前を付けてもいいよ。

65デフォルトの名無しさん2012/02/27(月) 16:57:40.18
>>62
それ以前にリアル業務が頭数足りないのは明白なんだからルール変更は普通にあるだろうな
業務体制を根本から見直す必要があるかも

66デフォルトの名無しさん2012/02/27(月) 17:22:40.25
>>65
あ、そうなの?
詳しく読んでないから知らなかった。

672782012/02/27(月) 17:30:42.10
>>60
遅くなりました
職員情報管理すごくよくできていると思いました
データとして十分な気はします
あとは条件を満たした振り分けがうまくできるかどうかですが…

>>61
とても細かく指摘していただいてありがとうございます
自分だとそういったところに全然気づかないのでとてもありがたいです

ルール変更は多分ないと思います
人数最低限で何とか進めるしかないのかと…

68デフォルトの名無しさん2012/02/27(月) 17:40:31.46
>>67
> 職員情報管理すごくよくできていると思いました
> データとして十分な気はします

それマジで言ってんの?
人の増減とかがあったらどうすんの?
同じ名字の人がいたらどうすんの?
コード読めた?
ダイアログださいだろ。
つか、最初のシートに手入力が一番速くね?

69デフォルトの名無しさん2012/02/27(月) 17:50:37.31
絶対不可侵だと思いこんでいたルールであっても
相談あるいは交渉によってあっさり変更されてしまったりするのが
現実世界の理不尽さというか面白さだと思うんだ
一人で思い詰めてもよくないよ

70デフォルトの名無しさん2012/02/27(月) 17:56:35.53
>>67
> あとは条件を満たした振り分けがうまくできるかどうかですが…

なんかここ自動化できそうだとか思ってない?
まず無理だから。

71デフォルトの名無しさん2012/02/27(月) 18:20:25.55
>>60
マスタデータと、計算途中の値を保存する領域と、勤務表が確定した後のデータをごっちゃにしてるのが致命的。

722782012/02/27(月) 21:23:00.17
>11日勤の番号の入った勤務表を当番表に変換する
もっと簡単な方法があるのかもしれませんが一応できました
http://www.dotup.org/uploda/www.dotup.org2689511.rar.html
pass:vba
細かいところがなかなかうまくいかないです…

73182012/02/27(月) 23:02:40.00
>>72
お疲れ様です

処理方法は変えていませんが、
・Option Explicit をつける
・Select Case を使う
・当番と職員名は変数にする
など変更してみました

http://www.dotup.org/uploda/www.dotup.org2689961.xls.html
pass:vba

74デフォルトの名無しさん2012/02/28(火) 00:15:17.62
>>73
少し変えただけでだいぶ見やすくなりますね…
大好きなIfにとらわれずCaseも使っていくようにしなくては;
Option Explicitチェック入れ忘れてました、失礼しました

大変勉強不足で申し訳ないのですがCLngの長整数型に変換するというのはどういった使い方になるのでしょうか?
.Cells(h - 5, CLng(Right(touban, 1)) + 13) = staff
の辺りなどなぜこうできるのか分からなくて…

75デフォルトの名無しさん2012/02/28(火) 07:09:36.40
>>74
(あまり本質的なところではないと思いますが、)
"夜1"や"夜2"という文字列の右から1の長さの
文字列を切り出して("1"や"2")
それを数値に変換して13(マジックナンバーですが)
を足して当番表の該当列に合わせています

私はLongはVBAでは長整数型というより標準的な整数型として
使っています(4バイトの整数型という意味で)
明示的に数値に変換しなくてもVBAでOKかも知れません
自分が分かりやすいように



76デフォルトの名無しさん2012/02/28(火) 10:38:33.86
そこはvalの方がいいんじゃないか?
あくまで文字列を数値として解釈したいんだろ?
ってか、そこを含めて勤務帯マスタにしとけよ…マスタってなんなんだよ…

77デフォルトの名無しさん2012/02/28(火) 11:40:28.51
>>73
またまた無責任なコメント言うよ。

・range.currentregion.rows.countとかrange.currentregion.cols.countとか使おうよ
・基本的にselect必要無いから

782782012/02/28(火) 13:59:44.52
>>75
そんな方法があったんですね、知りませんでした
Longもそんなふうに使えるとは…
ありがとうございます

79422012/02/28(火) 14:02:31.42
他の人が言っているようにルール変更の危惧大ありなんだよなあ
とはいっても主任は夜勤禁止とかぐらいだろうけどメンバーがごっそり移動とかならよく有る事。
俺の元いた職場(ガススタ)での例(7時〜20時営業、配達業務あり)

・A店(5名体制) 所長とベテラン2名が移動(新所長はスタンド経験無し、ベテラン、新人1名)
・B店(3名+アルバイト1名…半年前に採用) ベテラン2名入替(初心者と新人)またB店所長はC店所長も兼務していたが、そちらも移動あり)

文面から来月には新体制になるみたいだからそれまでは根を詰めずにね

80デフォルトの名無しさん2012/02/28(火) 14:08:53.94
ド素人の糞コード対ド素人の会話に口出ししたくてムズムズするは

81デフォルトの名無しさん2012/02/28(火) 14:10:06.65
月の途中で抜けたり、月の途中から入るってのは無いの?

82562012/02/28(火) 14:16:12.52
>>79
42じゃなかったm(__)m

832782012/02/28(火) 14:23:30.69
>>79
自分の職場はルールを変えたりするのを理事長(現トップ)が嫌うので多分ないとは思います
あった時は…大変ですけど;

>>81
月の途中で抜けたり入ったりはまずないです

84デフォルトの名無しさん2012/02/28(火) 14:40:04.17
まずない=ある
だな

85702012/02/28(火) 14:43:31.96
俺のこと完全無視だけど、まじでこれを考えるのがプライオリティの最上位だから。
できるのかできないのか、やるのかやらないのか。
結局、全部Ctrl-C,Vでやるのが最速、ってことになるぞ。

86デフォルトの名無しさん2012/02/28(火) 16:16:27.89
>>84
ですよね
ルールが業務の継続に支障を来すようでは本末転倒というもの

87デフォルトの名無しさん2012/02/28(火) 18:40:19.02
278氏、コテハンにしておいて w

882782012/02/28(火) 19:15:11.16
ただ今夜勤中でスマホからなので書き込みできません
代行お願いしました
>>84↓は違います

>>84
失礼しました、過去一度だけあったようですが、もしまたあったら調整するようにします

>>85
大変失礼いたしました
どちらでしょうか…

89702012/02/29(水) 16:08:54.12
>>88
> どちらでしょうか…

何が「どちらでしょうか」なのかわからないけど、一番重要だけどわからないから考えることから逃げてないか?
実際にコード書くのなんかあとでいいよ。何をするかによって必要なデータもシート構成もかわるし。

> あとは条件を満たした振り分け

これやりたいの?やりたくないの?
やりたいなら、どのレベルで実現したいと思ってるの?

90デフォルトの名無しさん2012/02/29(水) 17:13:45.93
>>44 の要件定義が見れない
>>18と278だけで作るのか?
それならメール等でやり取りしてろ
多くの人の意見が聞きたいなら要件定義位はスレに書けよ

912782012/02/29(水) 19:25:00.78

922782012/02/29(水) 22:20:48.92
>>89
振り分けが一番重要かなと考えています

93デフォルトの名無しさん2012/03/01(木) 13:32:59.78
>>92
一番重要なら、なんで>>91の「【プログラム的に欲しいもの】」には入れてないの?

それを、程度は別にして自動化したいのなら、その実現には全開発時間の80〜90%位
かかるよ。

この自動化部分をこのスレの誰かに手伝って貰いたいなら、まずその部分の暗黙知を
形式知にしないと。

94デフォルトの名無しさん2012/03/01(木) 14:11:49.65
>>91
せめてDropboxの公開リンクかなんかにしろよ。ロダとか、流れる前提じゃないか。

952782012/03/01(木) 16:06:05.97
>>93
すみません、勤務表をVBAで作る上で一番基本になることだと思っていたので書く必要は無いのかなと考えてました
具体的にどう形式知にするのがよいのでしょうか…

96デフォルトの名無しさん2012/03/01(木) 17:08:07.11
>>95
横レスだが、自動化の範囲とか優先順位を考えといたほうがいいと思う。
例えば、

・最小限の自動化:
次月のラフな割り当て案をルールから自動で作成。
あとは手で調整。
ただし矛盾してる可能性のある部分は表示。(夜勤明け後が休みになっていない、とか)
矛盾部分の表示を見ながら人間が再度調整。
調整に行き詰ったら、割り当て案を再度自動作成(手で調整した部分は消える)。


・もう少し広範囲に自動化:
手で1箇所調整するたびに、関連する割り当て部分を自動変更。


・徹底自動化:
後日の予定外イベント(病欠、異動、役割変更など)への耐性が最大になるプランを自動的に選ぶ。
(カーナビの自動リルートみたいなものを想像)。
など。

まあ、ここまでするのは実際大変だから、最小限の自動化で運用して、足りない必須部分を後付け出来ればいいんだが。
後付け容易にする設計自体がノウハウだから、どこまでやるかの見極めは確かに難しいね。

97デフォルトの名無しさん2012/03/01(木) 17:39:00.34
>>95
> すみません、勤務表をVBAで作る上で一番基本になることだと思っていたので書く必要は無いのかなと考えてまし

なんかそれ以外を一生懸命やってるから、やりたいのかどうなのかわかんなかったよ。

> 具体的にどう形式知にするのがよいのでしょうか…

とりあえず思いついた質問。

これまで作った勤務表は、全て【勤務表条件】を満たしているかどうか。
満たせなかったことがある場合は、どれを満たせなかったのか。
1ヶ月分の勤務表を作るのに必要な時間はどれくらいなのか(hourだよ)。
公開して問題ない過去の勤務表があれば、個人情報等を消して公開する。
従業員の満足度は、【勤務表条件】を満たしてさえいれば、どのようなものでも最高なのか。

次に、どうやって勤務表を作ってきたのか、その手順をざっくりと説明(200〜400文字程度)。
他人に「一から【勤務表条件】を満たすものできる?」と言ってもそりゃわからないよ。
自分はおよそこういう手順で作ってるんだけど、自動化できる?であれば、相談に乗る人も出てくるかも。

【勤務表条件】をもっと明確にする。
たとえば、
「早番はなるべく間を5日以上はあける」というのは、最悪連続しても良いのか。
「勤務がなるべく均等になるように振り分ける」の「均等」とはどういう状態か。

とかかな。

98デフォルトの名無しさん2012/03/01(木) 17:45:07.03
>>96
> ・最小限の自動化:
> 次月のラフな割り当て案をルールから自動で作成。

実は「ラフな割り当て案」が一番難しいんだよ。
「ラフな割り当て案」=【勤務表条件】を100%満たしていない案ということだよね。

【勤務表条件】を100%満たせなければ、試行錯誤なりなんらかのアルゴリズムなりを適用して、
100%満たすものを作る、なら、実現方法は別にしてわかりやすい。

一部条件を満たしてなくて次に行くと、「早番はなるべく間を5日以上はあける」とかいう条件を
全然満たせなくなってくる。
満たせてないところを満たすよう修正すると、それ以降にも影響するでしょ?

だから、「マニュアルで修正可能なラフな割り当て案」というのはとても難しい。

99デフォルトの名無しさん2012/03/01(木) 17:50:14.05
そうだ、これも質問に追加。

これまでに試したことのある自動勤務表生成ツールはあるか?
あるとしたら、それを採用できなかったのは何故か。

100デフォルトの名無しさん2012/03/01(木) 17:58:34.97
>>98
>「ラフな割り当て案」=【勤務表条件】を100%満たしていない案ということだよね。

まあそのとおりなんで、最初から条件を全部適用するのは諦めて、実装しやすいところから出来ればいいんだが、という趣旨。
機能分離が簡単ではないのは承知。

101デフォルトの名無しさん2012/03/01(木) 18:14:13.36
すでに、この問題についてスレを読み、考え、書き込み、コードを書いた人ののべ工数は300人時(=2人月)くらいいってそう。

1022782012/03/01(木) 18:33:53.26
色々な意見ありがとうございます
>>99
これまでにツールを使ったことは無いです
単純に探してみて販売しているものがほとんどだったり、無料のものでも応用が利かない(自分の所では使用できない)ものだったからです

103デフォルトの名無しさん2012/03/01(木) 18:35:15.48
>>101
面白い現象だよな。
直接のメリットは何もないはずなのに。

ジェーン・マゴニガル 「ゲームで築くより良い世界」
ttp://www.ted.com/talks/lang/ja/jane_mcgonigal_gaming_can_make_a_better_world.html

>World of Warcraftのようなゲームはプレーヤーに世界を救う手段を与え、ヒーローの行動様式を
身につけるよう動機づけます。もしこのゲーマーの力を、現実の世界の問題を解決するために使えたと
したらどうでしょう? ジェーン・マゴニガルはそれは可能だと言い、その方法を説明しています。


104デフォルトの名無しさん2012/03/01(木) 19:26:14.98
>>102
>無料のものでも応用が利かない

>>91 のどれが出来なかった?

1052782012/03/01(木) 19:57:42.36
>>97
>これまで作った勤務表は、全て【勤務表条件】を満たしているかどうか
今までで年に3,4回は満たせてない月だと思います
夜勤、明け、休みのあとにまた夜勤と続いてしまうことがありました

>ヶ月分の勤務表を作るのに必要な時間はどれくらいなのか
そのときの希望休の数や、うまくはまるかどうかで変わってきますが
大体8〜10時間(数時間*数日)かと思います

>従業員の満足度は、【勤務表条件】を満たしてさえいれば、どのようなものでも最高なのか
特に条件を満たしていなくても(夜勤が続いても)さほど文句はありません
逆に日勤(早番)が3日とか4日続いたあとの夜勤だったりすると少し不満(文句はないけど)があったりします
最高の出来、というのは今までなかなか無いと思います

106デフォルトの名無しさん2012/03/01(木) 20:09:06.54
スコア方式の方が良さそうだな。

1072782012/03/01(木) 20:28:57.69
>次に、どうやって勤務表を作ってきたのか、その手順をざっくりと説明(200〜400文字程度)。
1.まず希望休、希望勤務を入れる(コレは固定)
2.前の月の夜勤を見ながら、夜勤を適当に入れていく
3.日勤の2番を夜勤に気をつけながら入れていく
4.早番を↑に気をつけながら入れていく
(これ以降日勤はとりあえず空白を入れる。番号を振り分けるでなく、日勤としておく)
5.行事など人の多く必要なところを入れる
6.それ以外の日に日勤を割り振る
7.この時点でおかしいところや組めないところ、偏っているところがあれば
一部入れ替える、ダメそうなら全体にごっそり替える
8.日勤の番号を偏りないように入れていく
9.最終確認。
希望勤務を確認→夜勤、早番、日勤の回数を確認→一人一人偏りを確認
→日勤の番号の偏りを確認
10.完成
という手順です

1082782012/03/01(木) 20:35:14.05
>>104
そもそも夜勤がなかったり、希望の勤務が入れれなかったり、可能・不可能な勤務が指定できないなどの理由からです

109デフォルトの名無しさん2012/03/01(木) 20:53:27.66
まぁベタだがPCにのみできるアルゴリズム。
まず、どの状態が良いか、悪いかという評価式を用意する。
たとえば、連勤=-10、などなど。
後は、
1.絶対動かせない人をまず配置する。
2.比較的動かせない人を、その枠にそって(たとえば火・金は勤務可であれば、どちらかに)あてずっぽに配置する。
3.そっから、あてずっぽうで余った人を置いていく。
それを、2を数10回、さらにそれに対して3を数10回ずつやる。

その中で、一番スコアの高かった表が、比較的よいシフト表な。
明らかに悪い表しか出てこなかったら、スコアの評価式変えろ。
ファジィ()。

110デフォルトの名無しさん2012/03/02(金) 01:08:27.99

VISTA, excel2000,モニター24
左上に貼りついている表をずらしてなんとかしたいが表をずらせない
マクロ、怪しいボタン、関数、リンクすべて消してくれ
セルの結合、色、多すぎる枠の太い線みんなやめてくれ
278さんがVBAの達人と理解したから再度アップ頼む
ボタンは、コントロールボックスのコマンドボタンを使って
プロシージャコマンドボタンクリックからスタートすると本に書いてあった

1112782012/03/02(金) 02:05:31.15
>>109
アルゴリズムはExcelでも出てくるものなんですね…
色々調べてみましたがかなり難しそうなので
教えていただいた手順を参考に試行錯誤を試してみたいと思います

112702012/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デフォルトの名無しさん2012/03/02(金) 12:01:27.24
再帰も絞込みも禁止ならそのとおりだな。

114702012/03/02(金) 12:40:11.81
>>113
再帰や絞り込みを使っても無理だって。

10人30日で300マスあるものの200マスが一意に決まって、残りの勤務の候補が3個に絞られたとしても、
3^100でだいたい10^46通り。
順に試していく方式だと、大体10^10位のオーダーにならないと無理。

なので、>>107のやり方をサポートする機能を実装するか、GA等を使って劇的に計算量を減らすか、
あるいは「ラフな割り当て案」を作れるとしたら、それを作るロジックを考えるのどれかしかないと思う。

115702012/03/02(金) 12:49:13.89
勤務表の難しいところは、29日分まで完全にできても、残り1日分で詰んだら終わりって所。
では、どこかとどこかを入れ替えることによって残りを埋められる状態にしようとすると、
まずどれが入れ替えられるのかを探すのが大変。
結局普通にやれば、「順に試す方式」になってしまう。

かといって、残り1日分はマニュアルでやってね、ということにして良いかどうかが微妙。
実際にやればわかるけど、あちらを建てればこちらがたたず状態が続くだけになりがち。

ただ今回は、多少条件に合致しなくても、従業員が受け入れてくれるようなので、それが救いかな。

116デフォルトの名無しさん2012/03/02(金) 12:55:07.17
既存のパッケージはボッタクリ、まで読んだ。

117デフォルトの名無しさん2012/03/02(金) 13:05:07.84
>>111
大事な所を数ヶ所ぼかしてるが、これだけでもそれなりにいい表作ってくれるぞ。

118デフォルトの名無しさん2012/03/02(金) 13:08:12.51
>>114
ちょっとだけ言っとくと、常に全部のスコアは覚えなくていい。最高の表を覚えとく。
作成中に明らかに挽回不能なスコアになった時点でその表は破棄。
順に試すなよ。あくまでランダムだ。
一番マシな適当な表だよ。

119702012/03/02(金) 13:44:24.32
>>109のようなやり方なら、乱数もいいかもしれないけど、日付順・人順に決めていく方式だと、
もうその方式自体が「順に決める」になっているので、あとは乱数を使っても使わなくても
たいした違いはないよ。

>>109はGA的なアルゴリズムで、確かにこれなら出来そうな気がしなくもない。
ちなみに、ちょろっと試そうかと思ったけど、>>90の要件読んでも早番が何人で夜勤が何人なのか
わからなかったので詰み。

120702012/03/02(金) 13:47:29.97
勤務表は一ヶ月に一回作ればいいから、>>109で導き出したスコアの良いものTop10を残しつつ、
29日ずっと動かし続けて、30日目にそのTop10から良いものを選んで修正するというのもありかな。

1212782012/03/02(金) 14:11:49.91
様々な意見ありがとうございます
1日の組み合わせが10億通りとか273万年とか数字で表されると無理なんだってはっきりしますね…
結局どう進めていくのがいいんでしょうか;

>>119
順に決めるなら乱数は使わなくてもそんなに違わないんですね
早番は1人、夜勤1が1人、夜勤2が1人です

122702012/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通りなので、
順番に決めていく方式はやはり無理。

ちなみに、なんで組み合わせの数を計算しているかというと、実際にコードを書いて試す価値があるか
どうかを決定するため。
順番に決めていく方式は、どんなに上手くやってもまぁ無理。

1232782012/03/02(金) 15:09:13.63
>>122
やっぱり順番にというのは無理があるんですね…
アルゴリズムを使って最良の表を考えるというのが一番なのでしょうか

124702012/03/02(金) 15:51:40.71
ひょっとして、誰かが自主的にコード書いてくれるのを待ってたりするの?
念のため言っとくけど、俺は書かないから。

暇つぶしに、ローカルで>>190の方式で実現可能性を見いだせるかどうかのテストコードを書いたりは
するかもしれないけど。

1252782012/03/02(金) 20:02:32.62
>>124
そこまでは思ってないですが、自分だけでは難しいなと…
皆さんが協力してくださるおかげでここまで来られてる状況ですから

テストコードでも見せていただけたらとても参考になると思います

126デフォルトの名無しさん2012/03/02(金) 23:41:42.27
>>109だが、やっとホテル帰ったから要件見ようとしたらまた流れてた。

>>119
出来そうな気というか、これに味付けしたものが売り物になってるからな。ソリューションとしてだが。
実際には特許ものの刈り込みとか、数学的・統計学的な式を使った任意の離散的だが偏りを持たせた2・3とか使ってるが。

1272782012/03/03(土) 00:06:14.75
>>126
流れるのそんなに早かったですかね…
やっぱり別の方法で上げておいたほうがいいのかな
http://www.dotup.org/uploda/www.dotup.org2704876.txt.html
pass:vba

そこまで素晴らしいものは到底作れないですね;

128デフォルトの名無しさん2012/03/03(土) 00:19:57.36
トン。明日待機とかの暇な時間に見てみる。

129デフォルトの名無しさん2012/03/04(日) 01:27:23.78
>ひょっとして、誰かが自主的にコード書いてくれるのを待ってたりするの?
雑談しながら何もしないで待っているように感じる
データと条件を整理して常にUPしなければ無理と思うが
おもしろそーだから俺も待っている

>・各人の勤務ごとの月の合計(休、日、夜、明、休、有、研)を表示させたい
データを見て休の意味がわからない、日曜日は会社によって月曜日もあるが
休 日曜日、変更できる
休 日曜日、各人指定なので変更不可
休 研修なので変更不可
休 会社or法律による強制休日、変更不可
休 有給、変更不可
休 会社都合による有給、変更できる

win98.excel95でナンバーズを総当たりで解いたら
7分ぐらいかかった、上級者のコードを見たいので興味がある

1301092012/03/04(日) 01:49:33.92
今日地味に組んでみたが、VBAくそ遅い。VB6と変わらんやろと思ってたが、明らかに遅い。
最終的にbookが壊れたが、死ぬほど遅いが、ちょっと成果書いとく。

要件定義が甘いので、あてにしない。
各個人に、マスタとしてシートを定義する。
そのシートは、一月分の、
「入れない場所、絶対入る場所」を定義する。
横軸か日付、縦軸が勤務帯。朝、昼2〜昼10、夜1,2,研修、休み。
休み、研修は予め、全員を「勤務不可」とする。その上で、勤務可のみマーク。
一発目、そのマスタを読んで、全体としての、シフト番号1〜31x枠数(シフト枠n)に対する選択肢を決める。誰かの「絶対入る場所」にあたった枠は、他の選択肢を外す。
これから、ランダムで当て込んでいく。なお、一日に同じ人が働く事はないものとして、この時点で刈り込む。

一週間分を先ず決める。その一週間を基準に、個々人人に対して、一つ前のシフト枠に対して評価式のうち致命的ではないもののみ、ランダムで当て込んでいく。
ここでタイムアップ。お仕事してました。

131デフォルトの名無しさん2012/03/04(日) 01:51:39.38
>>130
コード上げろ

1321092012/03/04(日) 04:10:28.65
>>131
すまん。早めにそういう類のサイトにアクセスできる環境に行くわ。
DropboxもFWに蹴られるんよね。

133デフォルトの名無しさん2012/03/04(日) 09:17:39.57
>>130
えっ? ダメだったの?
全然試しもしないで
できるって言い張ってたのかよ
くそ迷惑な奴だなw

1342782012/03/04(日) 13:43:23.03
>>130
そんなに遅いものなんですね…
でもそこまで色々と出てくるとは;
どんなものか見られるの期待してます

1351092012/03/04(日) 13:59:27.36
>>133
うん、すまん!
.netなら多少早かったが、反則よね。

136702012/03/05(月) 14:59:33.88
月に休みが10日程度ということなんだが、望ましい休みのパターンはどのような感じなんだろう。
それから勤務日と休日の割り振りはどんか感じが望ましいんだろう。

例えば、基本は2勤1休でその3日の繰り返しが良いとか、
基本は4勤2休でその繰り返しが良いとか、
休日は完全にばらばらの方が望ましいとか、
そういう基本的な理念がわからない。

>>109
セルを頻繁に更新してない?
Excelの機能が要らないんだったら、メモリ上であれこれした方が速いよ。
Excelの機能が必要だとしても、遅くて使い物にならないのなら、メモリ上であれこれする必要がある。

137702012/03/05(月) 15:01:27.02
そうだ、有休の話が出てこないんだが、有休(やそれに類する休み)の扱いはどうなってるの?

138デフォルトの名無しさん2012/03/05(月) 17:45:39.21
>>130
なぁそれ本当に現実味があんの?
評価式さらしてみ?

139デフォルトの名無しさん2012/03/05(月) 17:48:27.21
>>136
普通は、あるリズムで繰り返されるのがベターだとは思うが、>>278の所はどうなんだろうねぇ

140デフォルトの名無しさん2012/03/05(月) 20:00:11.04
見たところ、やはり70さんが技術、経験ともに上級者といった感じだ。
短いテストコードでもいいし、過去に書かれたコードの一部でもいいので、ぜひ見せてください。
とても勉強になると思うので、よろしくお願いします。

1412782012/03/05(月) 20:17:50.77
>>136
休みは大体仕事の間に一日、たまに2連休(月1〜3回程度)、稀に3連休(数ヶ月に1回)
理想としては月に2回前後連休、残りの休みは1日休みで振り分ける感じです
ただ希望休などで連休が多かったり(滅多に無いけど4回とか)逆に連休がない月もあります

>>70
扱い…例えば月10回の休み+有給です
他に何と説明したらいいか;

>>139
あんまりリズムとかないと思います。希望休を皆自分勝手に入れるので…

>>140
同意。見せていただきたいです

142デフォルトの名無しさん2012/03/06(火) 03:26:59.13
元スレの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

144562012/03/06(火) 11:45:00.24
流れはこんな感じで良いのかな?
@入力シートで行事日、各人毎の希望休み、研修日を設定し確定
A1〜2日迄の明け、夜勤休みを自動設定して希望勤務詳細シートに内容をコピーしシート画面に移る
此処で更にシフト毎の出来ないパターン(日勤、夜勤、早番の三種類)を設定
B入力シートに戻して指定日(通常は1日から)希望勤務詳細シート、従業員相関シート(能力定義も此処で)曜日別人数表(最低)を元に最低人数分を自動振り分け
・行事日は曜日別人数に+2名自動追加
・振り分けで余った分はマニュアルで振り分けする

145278 Excel2000使い2012/03/06(火) 12:29:34.02
>>142
>その前に・・・278氏、トリップ付けるなり、別名付けるなりしないと、このスレの278なのか依頼人の278氏なのか分からなくなるぞ。
そうですね…名前は改めました

>・1項目づつ決定して行く
これは1日ずつってことでしょうか?それとも早番、夜勤…といった感じ?

得点化というのは前に出ていたアルゴリズムと同じようになるのでしょうか
それとも手順(コード?)は全然別なのかな…

>>144
流れはそんな感じですね
行事日の設定は日を設定かその日の日勤者数を設定するとどっちが早いのかな
最悪勤務指定で必要人数分の職員を適当に選んで日勤希望にしておくのがいいかと思ってたけど余計時間かかるようになっちゃうかな
行事日は+2名で足りない可能性があります

146デフォルトの名無しさん2012/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とか

つまり、その勤務に適してるかどうかを数値化するの。
それで、その勤務に一番適してると数値で出た人を割り当てていく。

コンピュータは厳密にいうと数値の計算しかできない。
(文字の処理なんかは誰かが作ったプログラムで数値化してから行ってる。)
基本に立ち返って数値化するのが早道だと思うよ。

147562012/03/06(火) 13:42:00.45
@1日分の自動割り振りの順序
 夜勤1→日勤2→早番→夜勤2→日勤3〜5→休み(夜勤明け、希望休含め5?名)→日勤6〜
A・各担当は前日の担当の次席が基本で各能力の次席者がいなくなったら最上位者へ
 例.夜勤1 A→E
夜勤2 B→F
日勤2 C→G
早番 D→H
・休日の処理
夜勤明け→5日以上連続勤務者→4日連続、3日連続の順で設定
・最低勤続者数、休日者数に達したら残りのメンバーは空欄としておく

148702012/03/06(火) 13:43:01.18
>>141
> 理想としては月に2回前後連休、残りの休みは1日休みで振り分ける感じです
なるほど。これが理想か。

> あんまりリズムとかないと思います。希望休を皆自分勝手に入れるので…
ひょっとして、半分以上またはほとんどの休日をみんな事前希望してしまうのかな?
なんとなく、事前希望は、ひとりあたり月に0〜2日位で、ほとんどの休日は自動割当
するのかなと思ってたんだが。

>>140
sourceforge.jpでとあるVBAのソフトを公開してるんだが、本名で公開してるのでここではちょっと…

あと、重ねて言っとくけど、この件に関しては絶対にコード書かないから。
書き始めてしまうと、40〜50時間は持ってかれそうだから。

個人的には、いろいろと要件が明らかになってきて、「絶対無理」から「いけるんじゃない?」
くらいな気になってるよ。

149702012/03/06(火) 13:53:15.62
想像してるんだけど、夜勤1と夜勤2は、まとめて「夜勤」として割り振って、
日勤3以降もまとめて「日勤」として割り振って(ひょっとして日勤2もあわせて「日勤」でいいかも?)
あとから割り振り直すというロジックじゃ駄目かな。
>>107で、何故日勤2だけ特別扱いしてるのかわからない。

つまり、自動割り振りは「早番、日勤、夜勤、休日」の4種類だけ。

これで夜勤禁止ペアや推奨ペアの条件をクリアできて、なおかつ日毎の勤務者数をクリアできてれば、
日勤内・夜勤内の役割分担は後付けでできそうな気がするんだが…

150702012/03/06(火) 13:58:06.96
あと、>>278はわかってないと思うけど、これプロがやれば要件定義・設計(実現方法探索)をやってる間も、
1時間あたり3,000〜5,000円位かかることなんだよ。

151デフォルトの名無しさん2012/03/06(火) 14:23:58.32
マウスで夜1を引張ってくればセルに
夜1.明.休と入るのは出来ないでしょうか
数字は打ったほうが速そうですが
30日の月で夜勤5回が3人なら、31日の月は5回が5人
休みと前月分をみればだいたいメンバーが決まる
パソコン手入力と当番表の作成に時間がかかっている気がする
過去のデーター呼出しもできてないと思う

152702012/03/06(火) 14:56:34.87
>>151
> マウスで夜1を引張ってくればセルに
> 夜1.明.休と入るのは出来ないでしょうか

できるけど、そんなことしたいの?
夜1.明.休
夜2.明.休
と事前にシートの勤務表の外側に書いておいて、3つのセルをまとめてコピペすればすむじゃん。

1531092012/03/06(火) 15:57:36.40
>>150
結構安めだな。

俺は全日の枠を一次元配列にして、各個人に、対して、今の枠の番号と、次に入ってる枠との差の数字と、今の枠番号を枠数でモジュロとった数字組み合わせて評価式書いてた。
トライアルアンドエラーで、保存せんとガリガリ書いてたら無限ループ入っちゃってブレークも効かなくて飛んじゃったからソース無い。すまん>>138

154702012/03/06(火) 16:10:37.70
>>153
そんな安くないと思うけどなぁ。一人月いくらでやってるの?

> 無限ループ入っちゃってブレークも効かなくて
ひょっとして、強制ブレークの方法知らないとかじゃないよね?
あと、実行する前にCtrl+Sしようよ。

155デフォルトの名無しさん2012/03/06(火) 16:38:24.33
>>153
DoEventsぐらい入れようや。

156278 Excel2000使い2012/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
普通に売っているものが高いわけですよね…ここで関わっていただいている皆様には本当に感謝しています


157702012/03/06(火) 17:17:22.11
>>156
> 上級者でも50時間もかかるんだ…これはホントに一年は軽く超えてしまう

いや、50時間でできるわけじゃなくて、50時間くらいはこの問題に費やしてしまいそうということ。
受託開発案件だとしたら、2〜5人月じゃないかな。どこまでやるのかによるけど。
ちなみに、1人月はピンキリあるけど、50〜90万くらい。

ただ、それは第三者が作るから時間がかかるのであって、同じプログラミング能力があれば
当事者ならもっと短時間でできる。

だから、どこまでやるかを決めて、まずコード書き始めて、で、わからないところを質問する。
VBAスレにあるような粒度の質問だったら、答える人多数だよ。

158デフォルトの名無しさん2012/03/06(火) 17:41:53.30
>>156
きっと有資格者と言ってるのは、その項目に対応できる人って意味だと思うよ。
たとえば
夜勤の項目の時、夜勤できる人+100、夜勤できない人-100とか。
早番の項目の時、早番できる人+100、早番できない人-100とか。

159278 Excel2000使い2012/03/06(火) 18:05:12.58
>>157
なるほど…
やっぱりもっとしっかり勉強しなきゃいけないですね、短時間でできるくらいに

>>158
そういうことでしたか、納得です

1601092012/03/06(火) 18:16:42.59
>>154
出先のPCだったからある程度作ったらソースだけコピペでメールで持って帰ろうと思ってたんよ。
文書保存も添付メールも監査対象だから。
強制ブレークってcrtl+Breakか?あれ止まるときと止まんない時があるぞ。

161702012/03/06(火) 18:32:39.50
そう、Ctrl-break。
で、止まらなければプロセスkillだけど、保存してないならアウトだな。
というか、ファイルの保存が禁止されてる環境でよくやるね。
キーストロークとかも監視されてたりして。

162デフォルトの名無しさん2012/03/06(火) 19:47:41.63
278さん
Excel2000って・・・
セキュリティ大丈夫?!
サポート切れて随分経ちますが・・・
278さんのファイル開くのが不安だ

それと、このプログラムはけっこう重い処理になりそうなので、

セキュリティと処理速度から考えて
はやく新しいPCを用意して下さい

このスレで、その名前は
悪意がある冗談か、非常識な迷惑かどちらかにしか思えない

163デフォルトの名無しさん2012/03/06(火) 19:55:37.41
>>162
Excel2000で作ったデータ(プログラム含む)だからと言って、2007とかで開けばセキュリティとか関係ない。
まあ、2000使い続けるのはオヌヌメしないけどね。

278氏、いっそOffice2010

1641632012/03/06(火) 19:58:34.66
途中で書き込んでしまったorz
いっそOffice2010Proでも買ってAccessでプログラミングした方が楽かもね。
ExcelよりはAccessの方がこういうのは得意分野だから。

慣れないと何にもできないけど・・・。

165デフォルトの名無しさん2012/03/06(火) 20:01:56.63
非ITの零細職場ならExcel2000とかよくある話だろ
最新版Excelを都度当たり前に購入できるような職場なら手作りしなくても業者に発注した方が早い

166278 Excel2000使い2012/03/06(火) 20:39:26.48
昔うちにあったCD?から入れたExcelなので…
バージョンアップで2007にはなっているはずですけど;

職場が2000なので使うのならそちらも更新しないといけないですね

167562012/03/06(火) 22:12:47.08
以前、連続日勤後の早番で不満があったりするとの事だったので振り分けの最優先に休み(先着n名分)を先にもってきたほうが良いのかもと思った

168278 Excel2000使い2012/03/06(火) 22:37:39.91
勤務が続くのを嫌がられます
なので日勤*3日→夜勤とかも少し嫌がられたり…これに関しては仕方ないので何度かありますが;

169デフォルトの名無しさん2012/03/07(水) 00:26:39.95
>>56>>146的な自動化で良いと思ってる?それとも別の方法を考えてる?

>>166 278氏、開発用と運用用でバージョン違うんだとしたら数日に一回ぐらいは運用用で動かした方がいい。
完成して移したら全く動かないとかなると困るだろうし。

170562012/03/07(水) 03:14:19.11
>>169
ちょっと複雑すぎるような気がする…
278氏以外の人が担当になってもローテーの組立が理解でき紙ベースで行なっても組立可能な事が良いように思われる

171デフォルトの名無しさん2012/03/07(水) 03:21:45.77
>>170
スコア付けずにどうやって自動化するの?その方法が気になる。自動化はしないの?

172デフォルトの名無しさん2012/03/07(水) 08:01:25.73
>>70
とりあえず1〜2hでもコード書いてみて
コード書かないプログラマーなんて信用できんぞ
70もそう思わないか?

173702012/03/07(水) 14:38:59.11
>>172
そう思うけど、俺自身は別に信用されたいなんて思わないのでどうでもいい。

このスレに居るのは、誰かが自動振り分けコードを提示して、へーすげー、やればできるんだねー
って思いたいだけ。

174デフォルトの名無しさん2012/03/07(水) 16:51:59.66
参考までにどんな感じで書き進めていけばいいのか一部でいいから教えて

175702012/03/07(水) 17:23:33.21
俺が聞かれてるんだろうか?
どんな感じと言われても困るが。

176デフォルトの名無しさん2012/03/07(水) 18:02:55.88
そうですよね・・・ごめんなさい

177562012/03/08(木) 04:10:38.67
>>171
スコアは付けなきゃいいでしょうね
ただ、それ以前の問題として設定表の構成で悩んでたり悩んでなかったり…(所詮他人事なので)
さらにいうと入力シートのry
もう一寸>>278の暗黙知を可視化しないとダメかな?例えば妊婦さんでも夜勤、早番ありでよいのか?別部署から移動したてのベテランでも夜勤〜日勤2を直ぐに組み込んでよいのか(俺的には、こんなもの組むのはクソだと思うケド)
最高連続勤務日数は何日か新人2名に対して専任主指導者がつくのか人数は?
行事の予定が無くても繁忙期(月末、月初?)とかあるのか
行事によっては事前準備に結構な労働時間がかかるものがあるのか、同じ日に行事が重なった場合(敬老の日+誕生会とか)更に介護士の増員が必要なのか

178562012/03/08(木) 04:52:27.86
一月分のローテー表を組むのは月末?月初?
恐らくは月初の2日か3日にならないと厳しい(変更が多発する)と見ているけど…
他にも確認しなきゃいけない事が多々あるような無いような…

179278 Excel2000使い2012/03/08(木) 07:50:37.41
>>177
>妊婦さんでも夜勤、早番ありでよいのか?
今いる妊婦さんは夜勤はやってないです(早番はやってるけど)
これは可能勤務で夜勤のチェックを外すようにすればいいかな
>別部署から移動したてのベテランでも夜勤〜日勤2を直ぐに組み込んでよいのか
最初の一ヶ月程度は3番以降の日勤〜、二ヶ月くらいから夜勤、2番に入ると思います
>最高連続勤務日数は何日か
早番を含めて3連勤+夜勤、明けで5連勤は超えないようにしています
ただパートさんは自分で休みを指定するので月に2回くらいは平日5連勤です
>新人2名に対して専任主指導者がつくのか人数は
別部署も人が足りなくなるのでこっちに来るのは1人だけと思います
専任というのはなく、その日その番号だった人につくというようになります。なのでパートさんにつくこともあります
これは最初の1ヶ月くらい(指導月)は初めから入れておかず、手書きで加えようと思っています
>行事によっては事前準備に結構な労働時間がかかるものがあるのか
あります。その場合日勤時間に数名(大体1〜2人)抜けるので残った人数で仕事をまわしてます
>同じ日に行事が重なった場合
行事は必ずずらすようにしてくれているので更に人数が必要ということはありません

180278 Excel2000使い2012/03/08(木) 07:54:13.36
>178
指定休の締め切りが10日、そこから数日で勤務表を作って事務所へ提出
出来上がって配られるのはなぜか25日前後。毎月これくらいです

他にも確認すること…

181702012/03/08(木) 11:08:55.98
>>180
> 他にも確認すること…

つか、これまで明らかになった/した仕様で仕様書を更新して、誰でも見れるところに
置いてくれないかなぁ。
Google Documentとか使えないの?

1821422012/03/08(木) 12:27:38.27
もしおまいらがそれぞれ勝手に部分部分のコードを書くとすると、
先に大まかな枠と分担とインタフェースを決めないと、つなぎ合わせてもうまく機能しない。

本当は278が自分である程度枠になる部分を作って、
部品をスレで発注・コンペする形式がいいんだろうけど素人の278にそこまで期待はできないな。

誰かが278の代わりにプロジェクト管理とドキュメント収集をやらなきゃまとまらないだろう。
本当は言いだしっぺのオレがやるべきなんだろうけどデスマ中。スマソ。
(現にデスマ前は勝手にドキュメント化してたわけだし。)

70が積極的にかかわるなら70にお願いするのも手かもね。
56はコーディング専門っぽいし。(ドキュメントの話あまりしないし。ユーザーSEかな?)

プロジェクト管理は胆だし、負担も大きいんで70に頼むのは気が引けるが、適材適所で考えると・・・。

183278 Excel2000使い2012/03/08(木) 14:11:23.96

184278 Excel2000使い2012/03/08(木) 14:14:10.60
皆さんに手伝ってもらっている身で本当に申し訳ないのですが
明日の明けから3日ほど東北の支援ボランティアに行きます
遠いので帰ってくるのも遅くなってしまうと思います
スマホからスレは見れますが、多分まだ書き込みが出来ないと思います
何かあったら代行で書き込んでもらおうと思っていますが…
わがままを言って申し訳ないです

185562012/03/09(金) 05:02:51.42
ドキュメントはガラケー(PDF可、写真は100KB迄)で表示出来れば助かります。m(__)m
因みにWIN98のノート(VGA表示)Excel2000使用でネット接続無しの環境で仕事ではコンピュータは使いません

>>180
>>2の写真をチラ見した時(上記理由で全部は表示されなかった…)1〜31日までの表だったと思ったんだが提出する物は違うの?
>>184
〉東北の支援ボランティアに行きます←業務的にいうと休み扱い?研修?
研修旅行という名の慰安旅行とかあります?ある場合の扱いはどうしてます?
休みでないけれど休んだと見なしてくみこんでいるとか

186562012/03/09(金) 06:16:30.46
>>278とのやりとりから現状、ローテーション表は大まかに3回に分けて作成(場合によっては2回)と考えてよい?
@前月末までに翌月の1〜5日位迄
A月初めに12日位迄
B10日過ぎに残りの日数分

遅れたけど東北のボランティアご苦労様です。ケガや病気に気を付けて頑張って下さい(帰って来られてからで良いですよ)

187デフォルトの名無しさん2012/03/09(金) 06:28:36.76
>>186
どこからそう読めるの?
>>180に書いてある内容によると、
指定休(スタッフが希望する休み?)の締め切りが(前月の?)10日
そこから(作成期間)数日で勤務表を作って事務所へ提出
出来上がって(刷り上がって)配られるのは(前月の?)25日前後

って事でしょ?
10日の締め切りから遅くとも25日までに作成するって事なんじゃないの?

188562012/03/09(金) 09:00:48.55
>>187
そうともとれるので確認事項とさせてもらったが俺的には下記の理由で>>186的な運用をしているのではないか?と思った
@278が別スレで最初に相談した時に1月分+翌月5日くらいまでとレスしている
A>>180に「なぜか25日…」と書いてある
何故?詰まりはそんな頃に配布されても意味がないという事?
B子供がいたり何かクラブみたいなのに所属していたりすればわかるが翌4月の予定なんて3/9日、今日現在わからないと思う
まあ通常は会社の定休日に合わせて都合をつけたりするものだが、その定休日が基本的にないので…

189デフォルトの名無しさん2012/03/09(金) 09:25:01.72
>>188
勤務表のある会社、4〜5社に関わったが、
・勤務表の最後に翌月の最初数日を暫定(変更アリ)で入れるってパターンが多い。
・次にシフトを決めるのに休日や希望勤務の提出期限は前月の前半というパターンが多い。
・勤務表が決まった後の予定変更は勤務者同士での相談で入れ替えて上長に申請のパターンが多い。

自動化システムは頼まれないので作ったことはないが、これが普通だと思ってた。

190702012/03/09(金) 10:31:03.88
>>188
これ以外には取れないでしょう。

5月分の勤務表作成スケジュール:

4/10: 指定休の締め切り
4/11〜4/13: 278が勤務表を作成
4/13: 278が事務所へ提出
4/25: 事務所が全員に配布(4/13に出来てるのに、配布するのが遅い)

191デフォルトの名無しさん2012/03/09(金) 13:19:13.16
278さんに質問です
要件には日勤は10番くらいまであると書いてありますが
当番表には7番までしか項目が無いようです
8〜10番はどのように記載されるのでしょうか?

8番については、7番の欄に一緒に「7番/8番」と入れるのかなと
思いましたが、9番、10番については、見当がつきません

192デフォルトの名無しさん2012/03/09(金) 17:48:48.36
テスト

193278Excel2000使い2012/03/09(金) 18:03:04.36
書き込めた
>>185
帰ったらガラゲーでも表示できるよう試してみます
勤務表は1~31日のものです
ボランティアは完全に個人的になので普通の休みです
研修旅行(一泊二日で)あります
研修は仕事扱いで休みとはまったく別です。ただ勤務としているわけではないので日勤などにも入りません
なので休み10日+研修2日になります

>>186
紛らわしい書き方ですみません
>>190で綺麗にまとめてくれた通りです

>>189
>>188
勤務表のある会社、4〜5社に関わったが、
>・勤務表の最後に翌月の最初数日を暫定(変更アリ)で入れるってパターンが多い。
翌月はあまり考慮してません
>・次にシフトを決めるのに休日や希望勤務の提出期限は前月の前半というパターンが多い。
希望の期限はうちは前月の10日までです
>・勤務表が決まった後の予定変更は勤務者同士での相談で入れ替えて上長に申請のパターンが多い。
これはうちも同じです

194278Excel2000使い2012/03/09(金) 18:05:54.52
>>191
細かく見ていただいていてありがとうございます
10番であったときは(事務所がやってくれるのですが)8番と同じように7番の枠に8.9.10番も入れます
過去に11番までいたときは6番の枠にも入れてました

195562012/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デフォルトの名無しさん2012/03/09(金) 18:44:23.52
以前コテハンにしたらどう?と書いてあっさり無視されたもんだけどw
それ、全然ハンドルネームになってないというか、簡単に騙られるよ

ちゃんとしたトリップにしたほうが良いと思うんだが。

197デフォルトの名無しさん2012/03/09(金) 18:47:48.84
>>194
お忙しい中、お返事いただきありがとうございます

198562012/03/09(金) 18:47:51.74
おろ、考えながら書き込んでいる内に>>278から解答があったみたいですね

スマホに変えようかなあ…

199562012/03/09(金) 19:25:58.01
テキストはどっとあぷでもみれるんだけど大きな写真とかBookが取り込めなくてねぇ…

うーんと例えば2日日勤+研修2日後のシフトの扱いをしりたい(連勤3日の人がいたりする場合に休みの判定はどちらを優先しているのか、テキトー?)

後、他の人も言っているようにトリップをつけて
誰かがドキュメントに纏めたくても>>278のレスを追わなくてはいけないので(今のままだと全てのレスを読まないといけないので)

200デフォルトの名無しさん2012/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 |, -、_, - ゝ _|__〉、  〉

2012782012/03/11(日) 01:22:42.40
疲れて寝てしまってました…
>>195はよさそうかな
早番が一度多い程度はそのままでいいと思います
休みが回数分なかったら翌月に手書きで交代してもらい多く休んでもらいます

>>196
失礼しました
トリップつけようとしましたがうまくいきません(携帯からだから?)
うちのPCで書き込むときまで許してください

>>199
研修後は行事や予定、希望休による偏りなどがなければ次の日を休みにしようと考えています
研修も仕事と考えるので日勤などと入れて連続は避けています
大体てきとうです

202182012/03/12(月) 00:53:55.91
うまく振り分けできてませんが、上げておきます
http://www.dotup.org/uploda/www.dotup.org2736367.zip.html
pass:vba

忙しいので続きは、しばらく先になります

203デフォルトの名無しさん2012/03/12(月) 02:31:42.65
もう見れなくなっているし orz

204デフォルトの名無しさん2012/03/12(月) 07:53:42.56

2052782012/03/12(月) 11:10:50.22
昨日帰ってきてそのまま寝てしまってました…
>>202
朝時間なくてちらっとしか見れなかったけど凄い出来です
もうかなり完成に近いんじゃないかな
また少ししか試せてないので帰ったらじっくり見させていただきます

>>204
Aの回数制限は別にあるんですかね
あと新人や異動で来た人も夜勤1もやるかも

206デフォルトの名無しさん2012/03/12(月) 12:38:25.87
>>202,204は別人
ちょいと内容のまとめ直しと確認したくて上げてみた

207702012/03/12(月) 18:02:54.47
>>202
ダウンロードして動かしてみたけど、エラーが発生したので報告。

1. 勤務表管理.xlsをオープン
2. [勤務表の作成]ボタンをクリック
3. [トライ!]ボタンをクリック

setPreFill()の
> kinmuban = base_kinmu.Offset(r_adjust_kinmu + r_kinmu, c_kinmu)
で、実行時エラー13。

コードは見てない。

208278 ◆3HjE5W.53k 2012/03/12(月) 21:02:39.65
自分も色々いじっているとエラーが出ます
(ひな形開いた状態で勤務表管理の勤務表作成→いいえ。指定解除を押したときなど)
>>207のところを考えているのですが、素人には難しくなかなか分からない…
幸い続きは先になるようなので頑張って探します

209デフォルトの名無しさん2012/03/13(火) 15:48:03.50
あーあ、このスレも終わったな
よくあんな糞コード公表する気になるよな
今後はこの糞コードを軸に話が進むんだろうな

おい、そこの書かないより書いた方が偉いとか思ったお前、大間違いだぞ

210デフォルトの名無しさん2012/03/13(火) 15:56:49.57
なら他のやつもあげてみたらいいんじゃないかな
口挟むだけのは結局かけないんじゃない?
自分の案も出すくらいできるでしょ

211デフォルトの名無しさん2012/03/13(火) 16:32:40.21
まあ次誰かコード出したら、どっちも要件にあってなくて、コードが糞なので
いいとこ取りも出来なくて、ぐだぐだになるのは目に見えてる
次出す奴が完璧なの出せば問題ないがな
俺は無理w

212702012/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デフォルトの名無しさん2012/03/13(火) 21:50:39.80
ろくに動かん糞コード引きずってないで
無視して先へ進もうぜ

214デフォルトの名無しさん2012/03/13(火) 22:33:08.93
今後の流れだが、278がもっとガンガン書いていかんと全く進まんぞ
自主的に要件、設計、コードでも頻繁に書いて70他がアドバイス
周囲を巻き込み続けないとな

215278 ◆3HjE5W.53k 2012/03/14(水) 02:40:51.53
とにかく色々いじって見たけどやっぱり難しい…

>>212
アドバイスありがとうございます
教えていただいたところ試してみたいと思います
大文字のほうが見やすいですね

>>214
ガンガン書いていかなきゃですよね;
でもUPしてもらったものもなかなか直せないしもっと勉強しなきゃ…
もっと頑張ります

216582012/03/14(水) 04:30:21.38
明日、友人に頼んで>>18の内容をダウンロードしてもらうので宜しければ再Upお願いします

>>215
> とにかく色々いじって見たけどやっぱり難しい…

何が難しいのか、具体的に言わないと
@自動振り分けの結果はかなり悪い〜良い?かなり良い?
A手入力による調整が難しい
・そもそもおかしな所をみつけるのに時間が懸かりすぎて難しい?(各人の休み、勤務種別毎の合計表示がないので278の頭の中で計算しないといけないとか)・一件の手入力に時間がかかる(特に日勤の入力等)や誤った操作で消してはいけない所を消してしまったとか
B初期設定(職員情報等)の変更、追加、削除に時間がかかるとか設定方法そのものがわかりづらいとか

217278 ◆3HjE5W.53k 2012/03/14(水) 09:33:57.08
>>216
どちらかというと自分の知識不足でコードを読むのすら大変です…
もともと学校で少し習った程度しかVBAは分からないので;
本やネットで調べながらやってるから余計時間がかかってしまってます

218デフォルトの名無しさん2012/03/14(水) 12:04:52.04
途中で寝落ちしてしまった…

VBAは初心者レベルなので>>18のプロトタイプのコードの中身を理解するのに苦労しているという事ですね
そこは頑張ってとしか言いようがない
俺も初心者レベルでほぼ独学でExcelの使い方を学んで勤務表他業務用数本をVBAで組んだだけなので18のソースを追えるかちょっと不安><

219デフォルトの名無しさん2012/03/14(水) 12:31:05.55
読めない方が悪いのではない
読めないコードを書く方が悪い

220702012/03/14(水) 12:55:12.89
正直、俺にも読めないよ…

2211422012/03/14(水) 13:16:26.42
ざっと眺めて読みにくいコードなのでやめた。
たまに覗いてるけど、70がいなくなったら終わりだな。

222702012/03/14(水) 13:25:08.22
レガシーコード(テストの無いコード)のリファクタリング大好きっ子なんだけど、
人様のコードを勝手に修正するのもアレだし、時間も無いし…。

ステップ実行しながら追えば読めるとは思うよ。

223デフォルトの名無しさん2012/03/14(水) 18:29:27.87
まだDLしていない…
>>70,142さんが読みにくいと云うことはコメント類も殆どついてないのかな?
まあ>>18さんは振り分けの結果が満足のいくレベルか確認したくて超急ぎで作ったんだろうし(不満が大きければ振り分けのアルゴリズムを大幅に変更してもらえる?)
2000だとシート上に項目追加するだけでえらく影響が出たりするから(2007?からある程度連動するとか雑誌でみたような…)
俺的には名前と日別のシフト状況の間に休み、日勤、夜勤数等を列項目に
日の下に行事日区分、希望日勤者数、実日勤者数を行項目として表示させようかなあと考えていたので読めないと肉付けも難しいですよね
 ><

224562012/03/14(水) 18:43:26.90
ガラケーだと書き込みにも条件が多すぎる… (;´Д`)

2251422012/03/14(水) 19:22:05.83
>>223
コメントは所々に入ってるよ。
ファイルがいくつにも分かれてて、あちこちのファイルにコードが分散してて読みにくい。

226デフォルトの名無しさん2012/03/15(木) 01:02:07.07

227182012/03/15(木) 02:15:35.88
再Upとしてすぐ修正できるところだけ数行追加しました
・Sheet1で空セルが指定できるところ
・確認用に色付けしたまま、リセットやトライすると色が残ってしまうところ
http://www.dotup.org/uploda/www.dotup.org2747401.zip.html
pass:vba

228278 ◆KrUXNtvljU 2012/03/15(木) 21:58:59.19
>>222
人様のコード勝手にいじっちゃダメでしたかね;
まだいじったって言えるほど変わってないけど…

>>223
バージョンの更新?したから2007になってると思ってたけど、確認したら2000のまま…バージョン自体は変わらないのかな?
希望日勤者数の項目があれば行事日区分はいらないかもです

>>227
修正版ありがとうございます
まだ変更箇所確認してないのでこのあと確認させていただきます

2291422012/03/15(木) 23:08:41.84
>>228
依頼主がいじるのは別にイインジャネ?

230562012/03/16(金) 04:07:35.03
>>226さん有難う。>>227の分含めてDLして貰えました。
今から見ようと思います。スレちになるけどスマホだとDLしてmicroSDにおとしてパソコンで見る事が出来るのかな?
電池の持ちが余りにも悪くて買い換えようか悩んでいるもので…
動画とか余り見ないしネットも2チャンくらいなものノートも一年以上動かしてなかったし (^o^;

231デフォルトの名無しさん2012/03/16(金) 04:14:12.59
>>230
スマホならできる

232562012/03/16(金) 04:44:10.63
>>231 それなら買い換えてもいいかな

>>278さん、もう少し質問。
@嘱託の休みが多いのは事務所から働ける毎月の勤務日数或いは時間数の指示がなされている?
Aパートの場合も同じ?
132時間以上で会社の社会保険加入義務(強制)が発生し主婦の場合118時間超で税金を納めなくてはいけなかったのを思いだしたものですから…

233278 ◆3HjE5W.53k 2012/03/16(金) 22:23:09.37
>>229
そうですか、よかった;

>>232
パートも嘱託も休みの回数は年度始めに決まっています(事務所から回数書いた紙を貰う)
それも写真撮ってあとでUPします

234278 ◆3HjE5W.53k 2012/03/16(金) 22:56:50.00
ウェブアルバムめんどそうだったのでアプロダですみません
http://www.dotup.org/uploda/www.dotup.org2754101.jpg.html
http://www.dotup.org/uploda/www.dotup.org2754108.jpg.html
PASS:vba

縦が名前、4〜3月、合計、休み回数(8,9,10,11回)です

235デフォルトの名無しさん2012/03/17(土) 16:27:36.65
>>233
>ウェブアルバムめんどそうだったのでアプロダですみません

外注したらウン十万円のものタダで作ってもらっておいて
自分の骨惜しみは「面倒」だとかどんだけだよ

236デフォルトの名無しさん2012/03/17(土) 17:15:17.63
>>234
だからドロップボックス使えって言ってるだろカスが。
もう絶対コーディングしてやらん。

237デフォルトの名無しさん2012/03/17(土) 17:39:49.22
Googleドキュメントだと確かに面倒だったきがす
他のやつでうpすればいいんじゃね?

238562012/03/17(土) 22:11:17.95
>>234
Uぷ、すいません。
まだ、ちょこっとしかみてませんけど、やっぱり休みの割り振りに偏りが出てるみたいですね(パラメータの連勤数を下げればかなりかわるかも)

239278 ◆3HjE5W.53k 2012/03/17(土) 23:17:23.96
>>235
言葉足らずで申し訳ないです…
面倒なのは見るほうがなのでUPするのはすぐ出来ます

>>236
失礼しました、次からはドロップボックスを使うようにします

>>238
偏り出ますね;特にパートのPさんはなぜか月ごとに回数も変わってくるし…
家族での収入による調整だとは思いますが

240デフォルトの名無しさん2012/03/18(日) 08:13:54.88
>>278
要件の説明だけだとわからないので
実データをもとにしたデータを3年分ほど
上げてください
前提条件(指定休、希望休、指定休、希望休など)と
実際に作成した勤務表をできるだけ詳しく
お願いします

241デフォルトの名無しさん2012/03/18(日) 12:43:38.10
間違えました
指定休、希望休、指定勤務、希望勤務
です

242278 ◆3HjE5W.53k 2012/03/19(月) 22:40:57.46
>>240
遅くなりました、過去の勤務表です
携帯で撮ったので画質が悪くてすみません
2010年3月〜2012年2月までです
http://www.dropbox.com/gallery/67923374/1/%E5%8B%A4%E5%8B%99%E8%A1%A8%E4%BD%9C%E6%88%90?h=3c209d

243デフォルトの名無しさん2012/03/19(月) 23:45:19.40
>>242
ありがとうございます

244デフォルトの名無しさん2012/03/20(火) 00:18:22.61
>>237
そうか?excelより簡単だぞ

245デフォルトの名無しさん2012/03/20(火) 01:15:22.48
ダウンロードしたの、ボタンを押して動かない
みんなテストできているのか
VBAを直すということは動いているんだろうな

246デフォルトの名無しさん2012/03/21(水) 14:40:55.11
過疎

247278 ◆3HjE5W.53k 2012/03/22(木) 20:09:32.28
初歩的な質問で申し訳ないですが
セルAP5:AP34に乱数を配置したとして
その中の最大値のあるセルの行番号を求めるにはどうしたらいいのでしょうか?

248デフォルトの名無しさん2012/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 が最大値のある行番号です

これは、最大値がひとつの場合を想定しています
最大値が複数ある場合は、一番小さい行番号となります

249278 ◆3HjE5W.53k 2012/03/22(木) 21:44:03.60
>>248
ありがとうございます
まだまだVBA勉強中でして、この程度のことも分からず申し訳ないです

250デフォルトの名無しさん2012/03/23(金) 14:48:24.81
なあ、最初の発言が2/19で、もう一ヶ月以上たってるんだけど、VBAの勉強は何時間したの?
正直引くわ

251デフォルトの名無しさん2012/03/23(金) 19:26:28.55
まぁ初心者が一ヶ月程度でできるほど簡単じゃないってことだ

252デフォルトの名無しさん2012/03/23(金) 19:41:19.03
エクセルでやるのかw

253デフォルトの名無しさん2012/03/23(金) 21:35:27.85
>>249
勉強中って・・・>>36この時の勢いはどこに行った?

254デフォルトの名無しさん2012/03/23(金) 21:58:06.61
そりゃま初心者じゃどれくらいかかるかなんてわかりようがないよな

255デフォルトの名無しさん2012/03/24(土) 03:01:52.71
むしろ1年とか言ってたのが1ヶ月でここまで出来てるなら凄いだろ
全部56がやってくれてるおかげだが

256デフォルトの名無しさん2012/03/24(土) 03:36:33.23
>>255
俺?なーんにもしてないよ
18が未完成とはいえ、あれだけ作り上げてると赤の他人としては一寸触れないもんね

257562012/03/24(土) 03:46:10.38
ExcelVBAパーフェクトマスターくらいは持っておいて損はないと思う
(この本と後、500円くらいの雑誌2冊とマクロの自動記録とかで独学したなあ)

258デフォルトの名無しさん2012/03/24(土) 03:47:44.01
>>256
むしろ色々触ってっていいんじゃないか?ダメならうpしないだろうしその方が18も参考になるだろ

259デフォルトの名無しさん2012/03/25(日) 07:03:31.96
昨日、町の書店で見た【ExcelVBA逆引き大全 600の極意】この本良いかも
後、【続ExcelVBAのツボとコツがゼッタイにわかる本】(立山秀利 著)こちらは見たことないがスケジュール表の作成を主題にしているようですね

260デフォルトの名無しさん2012/03/26(月) 11:35:59.59
>>256
他人が触れないのは、コードが糞だから。本人は自覚あんのかな?

>>259
最初の一冊に「逆引き○○」とかは全然駄目。
素直に、VBAの基礎とExcelのオブジェクトの操作方法を説明してる本を買うのがいい。

2612092012/03/26(月) 13:27:28.22
な、俺の予想したとおりになったろ

俺は>>18のコードは仕様的に致命的な欠点(夜勤の回数を指定できない)があって使い物にならんと思ったんだが
278はどう思ってんのだろうな

262デフォルトの名無しさん2012/03/26(月) 15:17:40.19
>>261
うざいわ

263278 ◆3HjE5W.53k 2012/03/26(月) 20:28:47.54
少し離れた町の本屋行ったけどVBAの本って全然ないんですね…
やっぱり大きい店に行かないとないのか;
パーフェクトマスター素直にネットで買おう

>>261
自分ではとても作れないレベルのものなので使い物にならないなんて思ってないですけど…

264デフォルトの名無しさん2012/03/27(火) 13:26:47.24
つまり、今までは勉強する気なんてなかったってことか
アホクサ

265デフォルトの名無しさん2012/03/27(火) 16:54:37.12
>>263
そういう本買うから勉強が進まず挫折するんだよ。

この手の本を買いなされ。
『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本―最初からそう教えてくれればいいのに!Excel2007/2003対応 [単行本]』
http://www.amazon.co.jp/dp/4798017973/

266デフォルトの名無しさん2012/03/28(水) 09:22:25.54
まぁ本なくても勉強はできるしな

早番、日勤Aが勤まるメンバー数が14名…
詰まりは早番勤務後の次の早番予定は15日後(幅をとって間隔のめやすを12日、最大3回)以下、同様に日勤C〜は16名なので最大2回めやすは14日、最後の休み間隔は4で設定実行…

最初よりかなり良くなったけどメンバー間の休み数のバラツキがもうちょっと…かな?

268562012/03/31(土) 05:22:29.29
過疎っちゃてるけど>>278的には使えるレベルなのかな?それとも自動振り分けが満足いくレベルでない?
要求定義にそって色々、弄ろうとしたけど日々の日勤者数=休みの人数が確定してないと無理ぽいなあ

269278 ◆3HjE5W.53k 2012/03/31(土) 05:54:49.88
>>268
使えるレベルは>>227のことでしょうか?
どこをどうすればうまく割り振れるのか…使いこなせてないです
>日々の日勤者数=休みの人数
これはその日の最低勤務者数ではなくて、ですか

今のロジックだと付属の説明で>>18が述べているように割り振りが難しい。
単純にシフト種別毎に勤務回数(昇順)、最終勤務日、メンバー数(表示Noを使用)のテーブルを参照して逐次探索した方が良さそうなんだけどその日の勤務予定者数が確定してれば尚良いかと
ただ、現ソースに修正しようとすると読みづらくてね…

もうちょっと詳しくいうと
@前月分の全勤務状況をシフト毎のテーブル(回数、日付、メンバー表示No)にセット
A当月の指定勤務があればそれも回数にUpしてソートB夜勤1のテーブルから回数の少ないメンバーを検索してセット以降夜勤2、早番テーブルを検索という感じで
※禁止の人は最大値を回数を減らしたいメンバーにはウェイト加算する

272562012/03/31(土) 14:34:10.89
夜勤Aの時にペアチェックの追加ロジックが必要なだけで他のシフトも同じアルゴリズムだし前月も今月も同じシフト(前月早番3回したのに今回もまた〜)が多いとかの不満もでない筈…?
只、何か抜けているというか穴があるような気もする(翌日のチェック機能は除く)。
それより実家の収穫に追われてソースを弄れない(;´Д`)

>>267=56かと思ってたけど違うのか

アチャ-、指定勤務の事を忘れていた…
まだ勤務中なので帰ったら現行のパラメータ(曜日別のテーブル等)をもうちょっと見直して本当に修正が必要か考えてみますね
>>273 はいです

275278 ◆3HjE5W.53k 2012/04/01(日) 13:45:17.56
もう全然ついていけない域まで進んで行っている…

276562012/04/02(月) 14:31:03.22
とりあえず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があれば良いだけの話なんだけど
※俺の職場では日勤、準夜勤、深夜のメンバーがほぼ固定だしシフトを組むのはお局様なので使いません

284582012/04/03(火) 14:41:44.55
名前記入し忘れていた…
>282
確かに本人でなきゃわからないんだろうけど(職種も勤務体制も全く異なるし)
言い出しにくい&まだ問題点を把握しきれていないのかも

>>284
> 言い出しにくい

作って貰ってありがたいとかいうことなんだろうが、現状のままでいいのか駄目なのか、
駄目ならどこが駄目なのか言わないとわからないということが>>278に通じない。

286278 ◆3HjE5W.53k 2012/04/03(火) 21:07:25.12
まだちょっとうまく使いこなせてないので指摘できるまでいってないです;

>>281
パラメータ値ありがとございます、変更しました
指定情報というのは希望休や希望勤務のですか?3月分なら手元にあるのでUPできます
まだ問題点把握しきれてないです…
まだ実行するとエラーが出るのが直せてないのです;

>>279
しつけーなww

>>281
>掘っても掘っても掘っても終わらないけど雨が強くなってきたので今日はもう止める(´`)
農家?

288562012/04/04(水) 03:23:58.72
>>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、いや竹林が有るだけ

289562012/04/04(水) 03:37:36.70
18やVBAに精通している人も見ていると思うのでどういう時にエラーになるのか詳細な手順を書くのも忘れずに

290278 ◆3HjE5W.53k 2012/04/04(水) 03:40:25.22
ちょうど書き込みあった時間に目が覚めた…
遅くまでお疲れ様です

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月の希望勤務の申請になります

291278 ◆3HjE5W.53k 2012/04/04(水) 03:46:56.88
書き忘れた
Oは水曜、土曜が毎週休み
Pは土日祝日は全て休み
に加えて上の休日希望です

292562012/04/04(水) 04:03:08.58
有難い。朝が早いのでもう寝るけど後で実行してみます

293278 ◆3HjE5W.53k 2012/04/04(水) 04:07:31.19
この時間に寝て朝が早いんだ…
いつもありがとうございます、頑張ってください

>>286
> まだちょっとうまく使いこなせてないので指摘できるまでいってないです;

わかんない奴だね。
「使いこなせない」のは何故なのかも有用な情報だというのに。
それと、とりあえずは結果は得られるわけだろ?その結果がどうなのか評価しろって。

間違えて本体消してしまった。。。
またいつでもいいので>56再うpしてくれるとありがたい

>>290-291の内容でTRYしたら"日勤の割り当てで失敗"のメッセージがでるね

直接の原因は3日に日勤者5名を確保出来なかった為(夜勤、明け、早番で既に5名必要)
そもそも1日に夜勤の割り振りが上手く行っていないということで嘱託の西田さんを夜2(職員設定の休み間隔は7)に指定してみたが、やはり同メッセージと指定そのものが取り消され空欄になってしまう

指定解除ボタンを押した時のエラーは
× Formula1:="=勤務番号"
○ Formula1:="勤務番号"
にすれば直る

>>297は間違い

おいー間違いかよ
正しいの教えてくれよ

>>295
だから作ったのは俺じゃないし、ネットにも繋いでないとry
>>299
色々試した結果、一旦選択されたセルをActiveにするといいみたい
If Not Application Intersect…
rng.Activate
rng.Validation…←エラー行
>>278>>296的なのにはどう対応した?

301278 ◆3HjE5W.53k 2012/04/07(土) 13:57:33.67
自分はそこ対応できてないです
自分は同じようにやると'指定勤務の反映の
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")をセット

仕事に行きます

303562012/04/08(日) 14:30:13.57
過去スレを読み返していたら>>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

>>309
何で俺がわかんないとか思うんだろう?

>>306の意味がわからなかったのかな?
「(今月+1)月0日目」で今月末だ

>>309=>>56かw
ゴミだのクズだの言われて悔しいのぅw

313562012/04/11(水) 14:36:21.33
呼ばれているようなのでレスしようとしたが、何度も間違えて消してしまっていたので放置してしまった…
2007から?EOMONTH関数は標準として組み込まれいるので>>18は知らずに使ったのではないのかな
俺の時はExcelの勉強中(アドイン何それ?美味しいの?)で分析ツール-VBAと一緒に組み込んだんだけど>>278は治ったのかな?

>>268で日々の日勤者数=休みの人数が確定してないと無理ぽいなあとかいたけどよくよく見たら合計欄の下の行にエリアが設けてあるんだね
気づかんかったわ…

なんだ、>>56はこの糞コードの作者じゃないのか。
勘違いしてた。悪い。ごめん。

315デフォルトの名無しさん2012/04/12(木) 19:28:40.44
希望休通りの勤務表が出来るかわからないから
なにがダメなのか知りたいのに、エラーで返す。
ここで人が足りないと表示するのがふつーなのに

316デフォルトの名無しさん2012/04/22(日) 13:37:11.65
結局完成はしたのか?

317デフォルトの名無しさん2012/04/26(木) 17:22:56.71
このスレは死にました

318562012/04/30(月) 15:16:18.30
やっと筍掘りが終わった…
>>278は諦めちゃたのかな?

319278 ◆3HjE5W.53k 2012/04/30(月) 23:25:11.66
自分の実力では最早どうにもならないと理解しました…
本買ったり調べたりしながら作っていたけどここで他の方が作ってくれたようなものはとてもではないけど出来ないとわかりました;

320デフォルトの名無しさん2012/04/30(月) 23:51:38.22
同意せざるを得ない

321デフォルトの名無しさん2012/05/01(火) 00:14:43.28
勤務表以前に人数足りないとかいう話だったのは結局どうなったんだろう
278氏のレスが全然ないから
過労で死亡とか過密スケジュールを恨んだ同僚に刺されて死亡とかボケた老人に首を絞められて死亡とか
色々嫌な想像しちゃったよ

322562012/05/01(火) 03:52:18.10
そりゃ誰だって初めては、そうじゃないのかな
まあ初心者には高レベルなのは確かだけどね

見直しさせて貰っているけど今ひとつ勤務表作成のレイアウトが気に入らなくて悩んでいるんだよなあ
注、自動振り分けの方法は前に述べたやり方で、やろうと思っているんだけど

323デフォルトの名無しさん2012/05/01(火) 11:44:19.85
>>319
やっと、>>45が正しかったことを実感したか。
経験者の言うことは聞いとくもんだぞ。

324278 ◆3HjE5W.53k 2012/05/01(火) 13:56:22.51
>>321
人数不足は何とか乗り越えてます
新人2人入って(一人は3月から研修)4月中には二人とも夜勤やれるようにまでなりました
ご心配?おかけしました;

>>322
高レベル過ぎますね…何とかなるなんて甘い考えでした
自分はレイアウトまで拘る余裕なかったので;;
自動振り分けはそれが一番よさそうですかね

>>323
否定できません

325デフォルトの名無しさん2012/05/05(土) 09:56:08.88
普通に発注したら幾らぐらいするんだろ
4人月で400万くらい?
Excelの単価相場知らないけど

3263252012/05/05(土) 13:20:59.66
アルゴリズムとかちょっと考ようとしたけど
結構難しい部類に入るねこれ
ノウハウ無いと4人月じゃ済まないな

327デフォルトの名無しさん2012/05/05(土) 13:21:52.94
だけどそんなにはかからないだろ
十数万はかかると思うが

3283252012/05/05(土) 13:28:27.57
十数万って3人日位ですやん(´・_・`)

329デフォルトの名無しさん2012/05/05(土) 13:37:31.79
有料の線ならパッケージ導入&カスタマイズ(設定)が一番安く上がると思う
要件定義から受け入れテストまでがっちりやったら時間かかるが
コーディングだけなら0.8人月くらいかな

330デフォルトの名無しさん2012/05/05(土) 13:44:17.40
有料で金払ってまでするもんじゃないだろ
楽にはなるだろうが278だって今手書きで出来てるわけだし

331デフォルトの名無しさん2012/05/05(土) 13:59:25.14
勤務表作る労力は半端ないから有料でも価値はあるよ

ただ勤務表作成はNP困難な問題だから
半端なものを作るより手作成の方がコストがかからなかったり
精度が高かったりする

3323252012/05/05(土) 17:23:38.06
このスレに載ってる要件だけ見て
基本設計書書いてみたがもう力尽きた
この処理じゃうまく動かん気がするし
http://www.dotup.org/uploda/www.dotup.org2944558.jpg

3時間なにやってたんだorz

333562012/05/06(日) 05:10:27.39
新しい案がでて来たみたいだね…

手作成はちゃんとした人が作れば良いんだけれど恣意的に作ったんでは無いかと(作成者にとって都合が良いとか)疑われ易く職場への不満要因のひとつでもあるからねぇ
http://n2ch.net/r/7I5-774F---VVR/welfare/1320418159/?guid=ON

しかし自分のセンスの無さに絶望(T_T)
今の勤務表作成シートの下にある日別の日勤割り当て数と日勤割り当て可能残数を上の行に持って行きたいんだけどレイアウトが小汚くなっちゃうよ

3343252012/05/06(日) 18:56:59.62
ちなみにこの>>232で書いたアルゴリズムなら
(バグは少しでることを除けば)動作自体はすると思うけど
月末に行くに従って再試行の数が増大すると思う

それに休日を振り分けるアルゴリズムもrのパラメータが
職員の構成によってかなりピーキーになりそう

もうGWが終わるからこれ以上私は関わらないけど
計算量のことを考えると、
おとなしく手作成の補助ツール作った方がいいかもしれませんね

(ちなみに ×couter4C ○counter4Dでした)

335278 ◆3HjE5W.53k 2012/05/08(火) 18:33:21.16
やっぱりお金をかけようと思うといくらでも高くなってしまうんですよね;

>>332
基本設計書…最近パソコンに触れてなかったから消えてしまってた;;
せっかく作っていただいたのに申し訳ないです><

>>333
こっちはなるべく皆が納得できるようなものを作ろうとしてはいるんですけどね;
どうやってもどこからか不満は出てきてしまう…
レイアウトは自分まったくセンスないので何とも(−−;

>>334
やっぱり月末の方は増えてしまいますよね
これに関しては仕方が無いのかなと思ってますが…
補助ツールって考えのほうがやっぱり多いのかな
どこまでを補助するかにもよりますけど><

336562012/05/09(水) 03:30:05.56
同じくDLし損ねた(T_T)
>>334-335 休日の振り分けが、かなり微妙になるのは気懸かりな問題の一つとして捉えてはいます
日毎の日勤者数を希望休、指定勤務の入力前後に確定すれば自動的に休める人数も確定するので一工夫すれば何とかなるのではと思っています
逆に日毎の日勤者数を確定せずに割り振りを行った場合、手作成でも後戻りの修正が多発して上手く行かないと思う

337562012/05/09(水) 03:47:50.43
同じ30日でも日曜が4回の月と5回の月では曜日毎のデフォルトで設定しても必要な延べ人数は変わってくるし、行事に対応する増員、有休、研修等による減員も発生するかもしれない
これが割り振り前に決まっていないと自動にしろ手作業にしろ上手く行かなくなると思っています

338デフォルトの名無しさん2012/05/09(水) 07:24:24.74
筍…
農家か?
技術を持った人は必ずしもそういった職場で働いてるわけじゃないんだな

339278 ◆3HjE5W.53k 2012/05/10(木) 20:34:33.40
>>336
手入力だと大体この曜日は毎週これくらいの人数だなって分かってるので
希望休が多ければその日は普段より一人ないし二人減らすようにやってます

そういえば確かに4回と5回で違ってきますね、まったく考えに無かった…
手入力はあんまり深く考えずに作っているので改めて問題点が出てくると悩みますね;

340562012/05/11(金) 04:37:51.10
@一月が30日の時、デフォルト値で必要な日勤者数が161〜164人(1日が土曜日から始まる時が最も少ない)
A実際の日勤者数=30×職員数(16人)−(公休+有休+研修の日数)−30×5(夜勤、明け、早番)
@−Aの差が6以上あると後から調整しようとした時にシフトに偏りが出たりしやすい(突拍子もないところで5連続勤務とか、あるシフトは一回だけとか)のではと思っている
さらに行事がある月は特に酷くなるのでは

341562012/05/11(金) 05:06:45.23
話は変わるが>>290-291で提示してもらった3月の希望休の情報より
1日 I、N
8日 B、C又はB、F
15日 C、N
29日 E
の夜勤が強制的に確定するようなのだが、どういう感じで反映させるべきなのかでも悩むんだよなあ
指定ボタンを押された時に赤の太字で表示して作成者に注意を促すようにしたほうがよいのかな

342562012/05/11(金) 05:29:10.54
8日はB、Fさんの組合せによる夜勤かな
何とはなしに思ったが希望休の情報からC、Fさんの仲が悪いのは勤務表の作り方が原因の一つ?

343278 ◆3HjE5W.53k 2012/05/11(金) 06:00:16.38
>>340
普段はあまり研修はないですし(特に最近まったくないな…)有休もそんなに多く使われないので
結構差が出てしまうように思います
行事の月が問題かもしれないですね;

赤の太字は確定するようなときかな?あったほうが分かりやすいのかなとは思います

B、Fの夜勤ですね
C、Fが仲悪いのは単純に相性の問題ですね;なるべく気づいたときは日勤でも2,3を組ませないようにしたりはしていたり…

344562012/05/11(金) 15:44:10.04
日勤のAとBも避けたい(何処が問題になるのか不明)とするなら片方が夜勤と早番の組合せも良くないのと思うので避けるべきシフトのパターンをもう少し詳しく
自動振り分けによっては風呂介助のある日に女性職員だけになったりとかもまずいのかな?
風呂介助の中はずぶ濡れ?になるので男女のペアは避けたいとかとかもあるのかな(そもそも中介助と外介助が漠然としたイメージしかもてていない)
中介助…体洗いの手伝い
外介助…着替えの手伝い
足腰が弱って自力で湯船に出入りできない老人とかもいるんだろうけど中介助は基本2名だっけ?

345278 ◆3HjE5W.53k 2012/05/11(金) 18:29:01.93
日勤ABは午前に排泄で二人で仕事を回すため、同じ理由でCDもお風呂の中介助で一緒になるため変えれるなら一緒にならないように気をつけたりしています
でも夜勤ほど長くいるわけではないですし、他の職員もいるのでABなどで一緒になっても夜勤ほど重要視はしていませんが
お風呂介助は女性職員だけでも問題ないです(昔は男性職員ほとんどいませんでしたし…)
中介助は防水?エプロンをするのでずぶ濡れになるということはほとんどないですし、男女ペアも問題ありません
中、外介助それで合ってます。手伝いではなく介助にはなっていますが;
足腰弱い人は座ったまま入れるお風呂(機械浴槽)で入るので中介助二人です
機械浴槽は月曜、火曜、木曜、金曜で普通の歩いて入れるお風呂が水曜、土曜です
歩いて入れる人のほうが自立していて介助が少ないため、外介助は一人でも大丈夫だったりします(土曜日など)

346562012/05/15(火) 14:46:22.34
休みの扱いは公休と有休しか提示されていないので
振休、特休(忌引、産休、育休等)は勤務表上での入力、表示及び集計欄の扱いはどうするものなの?

347デフォルトの名無しさん2012/05/16(水) 03:18:18.68
Excelではないがワイズシステムさんが作ったシフトマネージャーの操作マニュアルを見ると>>278の要望に近い感じがする(実行は起動時にエラーが発生してできなかった)
Excelだと此処迄の物を作るのは無理だけど参考にはなるのかな

348278 ◆3HjE5W.53k 2012/05/16(水) 20:28:58.26
>>346
振休は決まった休みってあるわけではないので特にないです
忌引もほとんどが突然のものになると思うので急な休み(一人欠)になります
産休、育休はそこからずっとが休みになるので全部[休]で入れるかその人自体を一覧から消すと思います

>>347
多分それと思われるものを見つけましたが自分もエラーが出てしまいました

349278 ◆3HjE5W.53k 2012/05/17(木) 19:57:37.13
>>347
失礼しました、エラーは出ましたが使えそうです
まだ少ししかいじってないので何ともいえませんが設定などは近いかもしれないです

350デフォルトの名無しさん2012/05/19(土) 23:32:23.92

351デフォルトの名無しさん2012/05/20(日) 07:22:04.32
使ってないが使えるのか?

352デフォルトの名無しさん2012/05/20(日) 08:49:57.51
馬鹿には無理

353デフォルトの名無しさん2012/05/24(木) 00:34:34.86
>>350
最小限の文字が違っとるがな(;´д`)

354デフォルトの名無しさん2012/06/05(火) 16:00:39.79
続ける気力なくした?

355デフォルトの名無しさん2012/06/05(火) 18:38:52.36
さすがに手詰まりじゃね?

356デフォルトの名無しさん2012/10/03(水) 15:17:20.26
>>350
障害大杉wwwww
ろくにテストしてないな

357デフォルトの名無しさん2012/10/06(土) 20:45:10.31
一応、上場企業なんだからExcelで有給管理はやめようよ

358デフォルトの名無しさん2012/10/07(日) 15:56:01.18
どの道完成させられる人はいないんだから意見出しても無駄だぜ
そもそもExcelで勤務表作れる人なんてそんなにいるわけないんだし

359デフォルトの名無しさん2013/09/29(日) 16:20:04.37
何これ、制約プログラミング?
Prologに投げたら?

360デフォルトの名無しさん2014/01/23(木) 07:44:12.72
そういえばBソフ板でも>>2みたいなの作られてたな
ちょうど質問が震災前、完成が震災後だったので、>>2の更に1年前くらいの話で
途中の機能追加から、震災への募金を条件として作ってあげるよっていうチャリティーみたいになって
メールでのやりとりになっちゃったから外野は途中までしか見れなかったけど、出来は良かったな

で、結局こっちは実用可能なものが仕上がったの?

361デフォルトの名無しさん2014/01/27(月) 00:59:43.19
どうだろうね

362デフォルトの名無しさん2014/08/16(土) 10:58:04.45ID:hxl4RJQ8
オブジェクト変数を上部の定義部分で定数(Const)として宣言したいのですができません。
どうやるのですか?

新着レスの表示
レスを投稿する