X



ExcelVBAで勤務表を作ろう
■ このスレッドは過去ログ倉庫に格納されています
021270
垢版 |
2012/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。

これで、俺がこのスレに居る理由ももう無いかな。
0214デフォルトの名無しさん
垢版 |
2012/03/13(火) 22:33:08.93
今後の流れだが、278がもっとガンガン書いていかんと全く進まんぞ
自主的に要件、設計、コードでも頻繁に書いて70他がアドバイス
周囲を巻き込み続けないとな
0215278 ◆3HjE5W.53k
垢版 |
2012/03/14(水) 02:40:51.53
とにかく色々いじって見たけどやっぱり難しい…

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

>>214
ガンガン書いていかなきゃですよね;
でもUPしてもらったものもなかなか直せないしもっと勉強しなきゃ…
もっと頑張ります
021658
垢版 |
2012/03/14(水) 04:30:21.38
明日、友人に頼んで>>18の内容をダウンロードしてもらうので宜しければ再Upお願いします

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

何が難しいのか、具体的に言わないと
@自動振り分けの結果はかなり悪い〜良い?かなり良い?
A手入力による調整が難しい
・そもそもおかしな所をみつけるのに時間が懸かりすぎて難しい?(各人の休み、勤務種別毎の合計表示がないので278の頭の中で計算しないといけないとか)・一件の手入力に時間がかかる(特に日勤の入力等)や誤った操作で消してはいけない所を消してしまったとか
B初期設定(職員情報等)の変更、追加、削除に時間がかかるとか設定方法そのものがわかりづらいとか
0217278 ◆3HjE5W.53k
垢版 |
2012/03/14(水) 09:33:57.08
>>216
どちらかというと自分の知識不足でコードを読むのすら大変です…
もともと学校で少し習った程度しかVBAは分からないので;
本やネットで調べながらやってるから余計時間がかかってしまってます
0218デフォルトの名無しさん
垢版 |
2012/03/14(水) 12:04:52.04
途中で寝落ちしてしまった…

VBAは初心者レベルなので>>18のプロトタイプのコードの中身を理解するのに苦労しているという事ですね
そこは頑張ってとしか言いようがない
俺も初心者レベルでほぼ独学でExcelの使い方を学んで勤務表他業務用数本をVBAで組んだだけなので18のソースを追えるかちょっと不安><
022070
垢版 |
2012/03/14(水) 12:55:12.89
正直、俺にも読めないよ…
0221142
垢版 |
2012/03/14(水) 13:16:26.42
ざっと眺めて読みにくいコードなのでやめた。
たまに覗いてるけど、70がいなくなったら終わりだな。
022270
垢版 |
2012/03/14(水) 13:25:08.22
レガシーコード(テストの無いコード)のリファクタリング大好きっ子なんだけど、
人様のコードを勝手に修正するのもアレだし、時間も無いし…。

ステップ実行しながら追えば読めるとは思うよ。
0223デフォルトの名無しさん
垢版 |
2012/03/14(水) 18:29:27.87
まだDLしていない…
>>70,142さんが読みにくいと云うことはコメント類も殆どついてないのかな?
まあ>>18さんは振り分けの結果が満足のいくレベルか確認したくて超急ぎで作ったんだろうし(不満が大きければ振り分けのアルゴリズムを大幅に変更してもらえる?)
2000だとシート上に項目追加するだけでえらく影響が出たりするから(2007?からある程度連動するとか雑誌でみたような…)
俺的には名前と日別のシフト状況の間に休み、日勤、夜勤数等を列項目に
日の下に行事日区分、希望日勤者数、実日勤者数を行項目として表示させようかなあと考えていたので読めないと肉付けも難しいですよね
 ><
022456
垢版 |
2012/03/14(水) 18:43:26.90
ガラケーだと書き込みにも条件が多すぎる… (;´Д`)
0225142
垢版 |
2012/03/14(水) 19:22:05.83
>>223
コメントは所々に入ってるよ。
ファイルがいくつにも分かれてて、あちこちのファイルにコードが分散してて読みにくい。
022718
垢版 |
2012/03/15(木) 02:15:35.88
再Upとしてすぐ修正できるところだけ数行追加しました
・Sheet1で空セルが指定できるところ
・確認用に色付けしたまま、リセットやトライすると色が残ってしまうところ
http://www.dotup.org/uploda/www.dotup.org2747401.zip.html
pass:vba
0228278 ◆KrUXNtvljU
垢版 |
2012/03/15(木) 21:58:59.19
>>222
人様のコード勝手にいじっちゃダメでしたかね;
まだいじったって言えるほど変わってないけど…

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

>>227
修正版ありがとうございます
まだ変更箇所確認してないのでこのあと確認させていただきます
0229142
垢版 |
2012/03/15(木) 23:08:41.84
>>228
依頼主がいじるのは別にイインジャネ?
023056
垢版 |
2012/03/16(金) 04:07:35.03
>>226さん有難う。>>227の分含めてDLして貰えました。
今から見ようと思います。スレちになるけどスマホだとDLしてmicroSDにおとしてパソコンで見る事が出来るのかな?
電池の持ちが余りにも悪くて買い換えようか悩んでいるもので…
動画とか余り見ないしネットも2チャンくらいなものノートも一年以上動かしてなかったし (^o^;
023256
垢版 |
2012/03/16(金) 04:44:10.63
>>231 それなら買い換えてもいいかな

>>278さん、もう少し質問。
@嘱託の休みが多いのは事務所から働ける毎月の勤務日数或いは時間数の指示がなされている?
Aパートの場合も同じ?
132時間以上で会社の社会保険加入義務(強制)が発生し主婦の場合118時間超で税金を納めなくてはいけなかったのを思いだしたものですから…
0233278 ◆3HjE5W.53k
垢版 |
2012/03/16(金) 22:23:09.37
>>229
そうですか、よかった;

>>232
パートも嘱託も休みの回数は年度始めに決まっています(事務所から回数書いた紙を貰う)
それも写真撮ってあとでUPします
0235デフォルトの名無しさん
垢版 |
2012/03/17(土) 16:27:36.65
>>233
>ウェブアルバムめんどそうだったのでアプロダですみません

外注したらウン十万円のものタダで作ってもらっておいて
自分の骨惜しみは「面倒」だとかどんだけだよ
023856
垢版 |
2012/03/17(土) 22:11:17.95
>>234
Uぷ、すいません。
まだ、ちょこっとしかみてませんけど、やっぱり休みの割り振りに偏りが出てるみたいですね(パラメータの連勤数を下げればかなりかわるかも)
0239278 ◆3HjE5W.53k
垢版 |
2012/03/17(土) 23:17:23.96
>>235
言葉足らずで申し訳ないです…
面倒なのは見るほうがなのでUPするのはすぐ出来ます

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

>>238
偏り出ますね;特にパートのPさんはなぜか月ごとに回数も変わってくるし…
家族での収入による調整だとは思いますが
0240デフォルトの名無しさん
垢版 |
2012/03/18(日) 08:13:54.88
>>278
要件の説明だけだとわからないので
実データをもとにしたデータを3年分ほど
上げてください
前提条件(指定休、希望休、指定休、希望休など)と
実際に作成した勤務表をできるだけ詳しく
お願いします
0245デフォルトの名無しさん
垢版 |
2012/03/20(火) 01:15:22.48
ダウンロードしたの、ボタンを押して動かない
みんなテストできているのか
VBAを直すということは動いているんだろうな
0247278 ◆3HjE5W.53k
垢版 |
2012/03/22(木) 20:09:32.28
初歩的な質問で申し訳ないですが
セルAP5:AP34に乱数を配置したとして
その中の最大値のあるセルの行番号を求めるにはどうしたらいいのでしょうか?
0248デフォルトの名無しさん
垢版 |
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 が最大値のある行番号です

これは、最大値がひとつの場合を想定しています
最大値が複数ある場合は、一番小さい行番号となります
0249278 ◆3HjE5W.53k
垢版 |
2012/03/22(木) 21:44:03.60
>>248
ありがとうございます
まだまだVBA勉強中でして、この程度のことも分からず申し訳ないです
0250デフォルトの名無しさん
垢版 |
2012/03/23(金) 14:48:24.81
なあ、最初の発言が2/19で、もう一ヶ月以上たってるんだけど、VBAの勉強は何時間したの?
正直引くわ
0255デフォルトの名無しさん
垢版 |
2012/03/24(土) 03:01:52.71
むしろ1年とか言ってたのが1ヶ月でここまで出来てるなら凄いだろ
全部56がやってくれてるおかげだが
0256デフォルトの名無しさん
垢版 |
2012/03/24(土) 03:36:33.23
>>255
俺?なーんにもしてないよ
18が未完成とはいえ、あれだけ作り上げてると赤の他人としては一寸触れないもんね
025756
垢版 |
2012/03/24(土) 03:46:10.38
ExcelVBAパーフェクトマスターくらいは持っておいて損はないと思う
(この本と後、500円くらいの雑誌2冊とマクロの自動記録とかで独学したなあ)
0259デフォルトの名無しさん
垢版 |
2012/03/25(日) 07:03:31.96
昨日、町の書店で見た【ExcelVBA逆引き大全 600の極意】この本良いかも
後、【続ExcelVBAのツボとコツがゼッタイにわかる本】(立山秀利 著)こちらは見たことないがスケジュール表の作成を主題にしているようですね
0260デフォルトの名無しさん
垢版 |
2012/03/26(月) 11:35:59.59
>>256
他人が触れないのは、コードが糞だから。本人は自覚あんのかな?

>>259
最初の一冊に「逆引き○○」とかは全然駄目。
素直に、VBAの基礎とExcelのオブジェクトの操作方法を説明してる本を買うのがいい。
0261209
垢版 |
2012/03/26(月) 13:27:28.22
な、俺の予想したとおりになったろ

俺は>>18のコードは仕様的に致命的な欠点(夜勤の回数を指定できない)があって使い物にならんと思ったんだが
278はどう思ってんのだろうな
0263278 ◆3HjE5W.53k
垢版 |
2012/03/26(月) 20:28:47.54
少し離れた町の本屋行ったけどVBAの本って全然ないんですね…
やっぱり大きい店に行かないとないのか;
パーフェクトマスター素直にネットで買おう

>>261
自分ではとても作れないレベルのものなので使い物にならないなんて思ってないですけど…
0267営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/03/29(木) 05:44:17.82
早番、日勤Aが勤まるメンバー数が14名…
詰まりは早番勤務後の次の早番予定は15日後(幅をとって間隔のめやすを12日、最大3回)以下、同様に日勤C〜は16名なので最大2回めやすは14日、最後の休み間隔は4で設定実行…

最初よりかなり良くなったけどメンバー間の休み数のバラツキがもうちょっと…かな?
026856
垢版 |
2012/03/31(土) 05:22:29.29
過疎っちゃてるけど>>278的には使えるレベルなのかな?それとも自動振り分けが満足いくレベルでない?
要求定義にそって色々、弄ろうとしたけど日々の日勤者数=休みの人数が確定してないと無理ぽいなあ
0269278 ◆3HjE5W.53k
垢版 |
2012/03/31(土) 05:54:49.88
>>268
使えるレベルは>>227のことでしょうか?
どこをどうすればうまく割り振れるのか…使いこなせてないです
>日々の日勤者数=休みの人数
これはその日の最低勤務者数ではなくて、ですか
0270営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/03/31(土) 08:23:30.03
今のロジックだと付属の説明で>>18が述べているように割り振りが難しい。
単純にシフト種別毎に勤務回数(昇順)、最終勤務日、メンバー数(表示Noを使用)のテーブルを参照して逐次探索した方が良さそうなんだけどその日の勤務予定者数が確定してれば尚良いかと
ただ、現ソースに修正しようとすると読みづらくてね…
0271営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/03/31(土) 08:53:56.75
もうちょっと詳しくいうと
@前月分の全勤務状況をシフト毎のテーブル(回数、日付、メンバー表示No)にセット
A当月の指定勤務があればそれも回数にUpしてソートB夜勤1のテーブルから回数の少ないメンバーを検索してセット以降夜勤2、早番テーブルを検索という感じで
※禁止の人は最大値を回数を減らしたいメンバーにはウェイト加算する
027256
垢版 |
2012/03/31(土) 14:34:10.89
夜勤Aの時にペアチェックの追加ロジックが必要なだけで他のシフトも同じアルゴリズムだし前月も今月も同じシフト(前月早番3回したのに今回もまた〜)が多いとかの不満もでない筈…?
只、何か抜けているというか穴があるような気もする(翌日のチェック機能は除く)。
それより実家の収穫に追われてソースを弄れない(;´Д`)
0275278 ◆3HjE5W.53k
垢版 |
2012/04/01(日) 13:45:17.56
もう全然ついていけない域まで進んで行っている…
027656
垢版 |
2012/04/02(月) 14:31:03.22
とりあえずModuleFit内の関数fillKinmu→Call setHoliday(c_kinmu)一行をコメントにしてみたが、こっちの方が使い易い気がするんで試してみて
設定ファイルの職員情報内各シフトの最大回数、間隔は適切に近い形に変えるのも忘れずに
0280営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/03(火) 11:12:49.34
>>278
>自分ではとてもではないけど作れないのでありがたいです

ありがたいかどうかなんてどうでもいい。
駄目なとこは駄目とはっきり指摘しろと言ってるんだ。
56は駄目な所があっても、仕様がわからないが故に駄目かどうかわからないんだよ。
0281営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/03(火) 13:51:56.98
掘っても掘っても掘っても終わらないけど雨が強くなってきたので今日はもう止める(´`)
パラメーター値をウプしたしました
http://viploader.net/ippan/src/vlippan268959.jpgすまないが、まだガラケーのままなので画面コピーしたのを送ったけれど非表示の部分は早番を参考にして下さい
>>280 ダメというより運用しづらいのではないかと思う。具体的には後で述べるとして後は指定が入った時かな?3月か4月の各人の指定情報をUpしてもらっとけば考証も進んだと思うが
0283営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/03(火) 13:56:05.84
4:3のスクリーンだとこれで運用するには、かなりきついものがある

メンバーのシフトをいじって確認の為に合計欄のある列へと行ったり来たり…
縮小表示にさせるとオサーンには見づらい
例えれば、お絵描きソフトで全体表示させつつ一部拡大が出来無かったら(全体表示画面と拡大画面を切り替えて操作、切り替えられた方は完全に隠れてしまう)と通じるものがあると思う←意味は通じるかな?
まあ278の所で運用できるDisplayがあれば良いだけの話なんだけど
※俺の職場では日勤、準夜勤、深夜のメンバーがほぼ固定だしシフトを組むのはお局様なので使いません
028458
垢版 |
2012/04/03(火) 14:41:44.55
名前記入し忘れていた…
>282
確かに本人でなきゃわからないんだろうけど(職種も勤務体制も全く異なるし)
言い出しにくい&まだ問題点を把握しきれていないのかも
0286278 ◆3HjE5W.53k
垢版 |
2012/04/03(火) 21:07:25.12
まだちょっとうまく使いこなせてないので指摘できるまでいってないです;

>>281
パラメータ値ありがとございます、変更しました
指定情報というのは希望休や希望勤務のですか?3月分なら手元にあるのでUPできます
まだ問題点把握しきれてないです…
まだ実行するとエラーが出るのが直せてないのです;
028856
垢版 |
2012/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、いや竹林が有るだけ
028956
垢版 |
2012/04/04(水) 03:37:36.70
18やVBAに精通している人も見ていると思うのでどういう時にエラーになるのか詳細な手順を書くのも忘れずに
0290278 ◆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月の希望勤務の申請になります
0291278 ◆3HjE5W.53k
垢版 |
2012/04/04(水) 03:46:56.88
書き忘れた
Oは水曜、土曜が毎週休み
Pは土日祝日は全て休み
に加えて上の休日希望です
029256
垢版 |
2012/04/04(水) 04:03:08.58
有難い。朝が早いのでもう寝るけど後で実行してみます
0293278 ◆3HjE5W.53k
垢版 |
2012/04/04(水) 04:07:31.19
この時間に寝て朝が早いんだ…
いつもありがとうございます、頑張ってください
0294営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/04(水) 11:07:33.88
>>286
> まだちょっとうまく使いこなせてないので指摘できるまでいってないです;

わかんない奴だね。
「使いこなせない」のは何故なのかも有用な情報だというのに。
それと、とりあえずは結果は得られるわけだろ?その結果がどうなのか評価しろって。
0296営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/05(木) 02:21:29.11
>>290-291の内容でTRYしたら"日勤の割り当てで失敗"のメッセージがでるね

直接の原因は3日に日勤者5名を確保出来なかった為(夜勤、明け、早番で既に5名必要)
そもそも1日に夜勤の割り振りが上手く行っていないということで嘱託の西田さんを夜2(職員設定の休み間隔は7)に指定してみたが、やはり同メッセージと指定そのものが取り消され空欄になってしまう
0301278 ◆3HjE5W.53k
垢版 |
2012/04/07(土) 13:57:33.67
自分はそこ対応できてないです
自分は同じようにやると'指定勤務の反映の
kinmuban = base_kinmu.Offset(r_adjust_kinmu + r_kinmu, c_kinmu)
でエラー出てしまうので…
0302営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/07(土) 15:03:48.55
>>301
エラーメッセージの内容がわからないのでブレークポイントに設定して値を確認すると
r_adjust_kinmu = 2
r_kinmu = 1
c_kinmu = 43
後モジュール変数の初期化でbase_kinmu = ws_kinmu.Range("A6")をセット

仕事に行きます
030356
垢版 |
2012/04/08(日) 14:30:13.57
過去スレを読み返していたら>>207のエラーの事?
EOMONTHワークシート関数を使用しているのでツール→アドイン→下の方にある「分析ツール」のチェックボックスにONにする
(俺が組み込んだのが6年前なので自信がないけど)

該当月の最終日(2月の最終日が28、29日かも含む)を判定するのに非常に便利な関数なんだけれどもExcel2000では標準として組み込まれていない
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況