Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


37581 / 76738 ←次へ | 前へ→

【44322】均等に作業を割り付けたい!!
質問  A340  - 06/11/13(月) 12:13 -

引用なし
パスワード
   皆様、こんにちわ。
現在、私は、エクセルにて24時間(1枡10分/横方向)の表を用い、その様々な時間帯にある作業を割り振るプログラム?の作成をしようと思っています。

Aさんが、朝の6時に出勤し、10分間は朝礼の時間、で、その人は15時に帰りますので、14時50分まで作業が実施可能です。残り10分は終礼時間です。

その作業枠の上の位置に、作業内容をセルを使い、その作業の必要時間分だけ結合した作業の枠があります。(色つきの結合セルです)

で、Aさんが6時に出勤し、まずは作業実施できる6時10分以降の作業を上の作業枠より切り取り、貼り付けを実施しています。それをすることで、さばくべき作業内容を消していき、全部消えると1日ある作業が全て実施可能であると判断しています。

ここまでは、以下のマクロでなんとか動いております。

Sub 作業割付2()
Dim i, j, b, c, d, e As Integer
Dim a As Long
For i = 523 To 602
Cells(i, 5).End(xlToRight).Select
If Selection.Interior.ColorIndex = xlNone Then
  Selection.End(xlToLeft).Select
Else
  a = Selection.Offset(, 1).Column
  b = Selection.End(xlToRight).Offset(, -1).Column
  For j = a To b
  Cells(500, j).End(xlUp).Select
If Selection.Interior.ColorIndex = xlNone Then
  Cells(500, j).Offset(, 1).Select
  Else
  c = Selection.Offset(, 1).Column
If c - 1 <= b Then
  Selection.Cut
  If Cells(i, j).Interior.ColorIndex = xlNone Then
  Cells(i, j).Select
  ActiveSheet.Paste
  Selection.Offset(, 1).Select
  End If
  End If
  End If
  Next j
  End If
  Next i
End Sub

この方法で、出勤人員最大で約90名程のラインがあり、割付を実施していますが、この方法で割付を実施すると、出勤時間の早い者、または、同じ時間に数名出勤をしても、ライン的に上にある者は、作業量が一番多くなってしまいます。
それに、休憩時間などを全く関係なく作業を割付ちゃいますので、休憩をいかせるために、再度そのラインから作業を抜き、別の人員に貼り付けて、休憩にいかせてます。

なんとかこれを、各ラインが休憩時間も取れ、作業割合も均一に近くなるように振り分けを実施したいのです。

この出勤人数は、数字の合計数(1ライン1を連打した別シートあり)で決定してますので、最大瞬間作業人員10名であれば、10名出勤しています。
この10名が必要な時間には、全員が作業をしていなければなりません。
その時間以外で1時間(6枡空く)の休憩ができ、また作業割合もある程度均一なんかにできればいいなぁと思ってます。


何かよいアイデアがあれば教えてもらいたいです。
長々と、そして、内容が分かりづらいと思いますが、よろしくお願いします。

0 hits

【44322】均等に作業を割り付けたい!! A340 06/11/13(月) 12:13 質問

37581 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free