エクセルで当番表をつくりたいのですが、簡単な関数を使ってできません。私のレベルは中級くらいです。当番表の内容は、21名がそれぞれ所有する田んぼの面積に応じて田んぼの水を入れる当番です。当番は二人一組で、行います。面積の広い人は、回数が多く、少ない人は回数が少なくあたるようにします。公平なものにならなくてはいけません。3~4か月間の毎日です。同じ面積の人も10名位いるので、私は、全体面積に対する割合を出して、間隔日数を出す。後・・それぞれの割当たる間隔日数を崩さずに当たるようにする。・・・などあるのですが、・・私には、難しいので、どうかそんなの簡単だと思われる方は、至急回答お願いします。できたら、私でも理解しやすい表現で回答いただけたら、うれしいです。よろしくお願いします。
No.5ベストアンサー
- 回答日時:
#4です。
以下貼り付けください。Sub Toban()
Dim Ws1 As Worksheet, Ws2 As Worksheet, Ws3 As Worksheet, Rng As Range
Dim r As Integer, c As Integer, p As Long, q As Long
Set Ws1 = Worksheets("Sheet1")
Set Ws2 = Worksheets("Sheet2")
Set Ws3 = Worksheets("Sheet3")
Ws1.Select
Set Rng = Cells(1, 1).CurrentRegion
With Rng
.Copy
.PasteSpecial Paste:=xlPasteValues
.Sort _
Key1:=Cells(1, 3), _
Order1:=xlDescending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
Sortmethod:=xlPinYin
End With
For r = 1 To 21
For c = 1 To Cells(r, 3)
Cells(r, c + 3).Value = Cells(r, 1) & c
Next c
Next r
Ws2.Select
Dim Hiduke As Date
Hiduke = InputBox("開始日入力。yyyy/m/d")
q = 0
For p = 0 To 178 Step 2
Range(Cells(1 + p, 1), Cells(2 + p, 1)).Value = Hiduke + q
q = q + 1
Next p
q = Ws1.Cells(1, Columns.Count).End(xlToLeft).Column
For p = 4 To q
Range(Ws1.Cells(1, p), Ws1.Cells(Rows.Count, p).End(xlUp)).Copy
Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll
Next p
Cells(1, 2).Delete
Set Rng = Cells(1, 1).CurrentRegion
For p = 0 To 89
Cells(p + 1, 4).Value = Cells(1, 1) + p
Cells(p + 1, 5).Value = Application.WorksheetFunction.VLookup(Cells(p + 1, 4), Rng, 2, 0)
Cells(p + 1, 6).Value = Application.WorksheetFunction.VLookup(Cells(p + 1, 4), Rng, 2, 1)
Next p
Set Rng = Cells(1, 4).CurrentRegion
Range(Cells(1, 4), Cells(1, 4).End(xlDown)).Copy Ws3.Cells(3, 1)
Range(Ws1.Cells(1, 1), Ws1.Cells(21, 2)).Copy
Ws3.Cells(1, 2).PasteSpecial Transpose:=True
Ws3.Select
Range(Columns(2), Columns(22)).ColumnWidth = 6
Dim Ret As Integer
For r = 1 To 90
For c = 5 To 6
Ret = Application.WorksheetFunction.Match(Left(Ws2.Cells(r, c), 1), Ws3.Rows(1), 0)
With Ws3.Cells(r + 2, Ret)
.Value = "■"
.HorizontalAlignment = xlCenter
End With
Next c
Next r
Set Ws1 = Nothing
Set Ws2 = Nothing
Set Ws3 = Nothing
End Sub
この回答への補足
ありがとうございます。・・でもチンプンカンプンです。是非是非ためしてみたいのですが・・・
こんなわたしでもこの内容が理解できますように、説明していただけたら、うれしいのですが・・・・
一刻もはやく内容をためしてみたく、わくわくしています。どうかよろしくおねがいします。
新しいブックで試したところできました。感激です。
ただ、わけもわからずあっという間にできてしまったので、
マクロの内容を是非、おしえてください。
会で、説明を聞かれたときに、ある程度は説明できるようにしておきたいと思います。
私の能力じゃないことは、歴然としているので、こんなことができるひとがいる・・ということも
伝えておきたいとおもいます。
手間だと思いますが、こんな機会はめったとないので、どうかよろしくお願いします。
最後の回数の少ない人が、後半でよく当たるのは、どうにかならないか、考えます。
もし、SOIXANTEさんも思いつくようでしたら、お願いします。3か月以上の悩みが一発解決です。
ありがとうございました。
厚かましく、説明もよろしくお願いします。
No.4
- 回答日時:
やはり機械的に処理するのには無理がありそうです。
最多回数の人、最少回数の人、それぞれの比率などによっても変わってしまいます。最後は手作業で鉛筆ナメナメ調整が要ると思います。
私ならどうするかといろいろ考えましたが、回数も平等に、間隔もほぼ平等に、とするために以下を思いつきました。
まずタタキ台を作ってみますかね。
やっぱりマクロが要りますね。
【1】Sheet1 の A1セルに =CHAR(ROW(A65)) と入れ、下にA21まで引っ張る。B1~B21には21名の名前を書く。順不同。五十音順でもいいでしょう。
【2】C1~C21にそれぞれの負担回数を入力。
【3】Alt+F11 。Microsoft Visual Basic という画面が出ます。
Alt+I、M とすると、真っ白な画面が出ますから、のちほどご提示するコードをコピーして、その真っ白画面に貼ってください。
【4】エクセル画面に移り、Alt+F8、「Toban」を選択して実行。
【5】実行すると日付を聞かれますので、入力。yyyy/m/d方式で、水を入れる日の初日を入力。
2010/8/1 のような形式です。
Sheet3にシフト表が出来ます。
左から順に回数の多い順の並びです。
日付を横に見ると、それぞれの日に2人いるはずです。これが当番です。
ただ、回数の少ないほうの人は比較的前半に当番が集中してしまいがち、また、回数の多い人は終わりのほうに結構頻繁に順番が回ってきます。
あとは手作業での修正をしてみてはいかがですか。
コードは分量の都合上、次の回答に書きます。
この回答への補足
すみません。違うページに説明していただいていたのですね。
ためしてみます。もし、できな立った時はまた、お願いいたします。
わたしに、できるといいのですが・・・とても期待しています。
最終です。
もし、できるなら、回数の少ない人は、間隔日数を多く、回数の多い人は間隔日数を少なくできないでしょうか?表を見てきづいたのですが・・・ここまでできるのであればできそうに思います。
当然、私には無理ですが・・・一番多い人で23回(2名)少ない人で4回(7名)です。一人のひとの当たる間隔がだいたい同じ間隔で当たるように・・どうか、考えてください。
お願いします。そうできたら、完璧!!!です。
次々とすみません。
No.2
- 回答日時:
ところで今回の相談は、単純な関数だけでは無理で、マクロの出番になりそうな規模の話では?関数の魔術師みたいな人だったら、マクロを使わずに何とかしちゃうかも知れませんが。
負担日数を均等割にするだけなら、全体日数/負担日数で求まります。端数は最終日で処理でしょうか。ただし単純に均等割にしただけだと、必ずどこかで重複したり、逆に誰もいない日ができると思われるため、そこは手動で調整するしかありません。もし期間中に1回とか2回しか当たらない家があるなら、そうした日の調整に入ってもらうのが楽そうです。そこは世話役さんの腕の見せ所かも。
もしかして、次のリンク先が役に立ちませんか?Excelを使って勤務表を作成する方法の解説と、フリーの勤務表作成支援ツールを紹介・配布しています。30名まで対応しているため、ちょうど今回の話に応用できそうだと思いました。
http://members.at.infoseek.co.jp/kenchan_h/index …
ありがとうございます。そうですか・・・魔術師ですか・・
参考のページをゆっくりとみてみたいとおもいます。
ありがとうございました。
No.1
- 回答日時:
等間隔の日数という考えでは、うまくいくとは思えません。
まず、期間が3~4か月間とありますが、おおよその全体日数を求めてください。
その後、各人の負担日数を計算します。
例えば、Aさんの負担日数は次のようになります。
=全体日数×2×Aさんの田んぼ面積÷田んぼ面積合計
端数は四捨五入します。
四捨五入の関係で、負担日数の合計が全体日数×2にはほとんどならないと思います。その場合は、全体日数を入力し直して調整します。小数点以下にも入力すれば微調整ができます。
後は、各人の負担日数を満たすようにスケジュールを割り振ります。
この回答への補足
全体日数を決めて回答のようにしました。負担日数もでましたが、さて、そこからがわからないのです。全体日数は、180日(90*2)なのですが、どのように割り振ればよいのでしょうか?個人の割り振られる日が近すぎたり、日数が空きすぎたりせずに、当たるようにするには?
また、二人がペアなので、二つのグループに分けた場合、同じ人が同じ日に当たったり、翌日にまた当たったりせずに、個人個人のおおよその間隔日数を維持しながら割り当てることはできるでしょうか?簡単な関数など使えるのでしょうか?入力規則は?オートフィルで同じ人が近い日に入力できなくすることは?説明が下手なので、わかりにくいとはおもいますが、是非、是非回答よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
準・究極の選択
「年収1000万円で一生カレーライス」か 「年収180万円で毎日何でも食べ放題」 あなたはどちらを選びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
当番表を作りたい
Excel(エクセル)
-
エクセル 当番表の作り方 エクセルで土日祝日を除いた、平日のみの当番表を作りたいです。 カレンダーま
Excel(エクセル)
-
エクセルで少し複雑な当番表を作成したい。
Excel(エクセル)
-
-
4
エクセルで作成したカレンダーに「当番の名前」を自動的に入力する方法をお
その他(Microsoft Office)
-
5
Excelで当番表の作成(休み考慮、完全ランダム)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アプリを入れたり消したりを繰...
-
家族旅行は何歳まで親が負担し...
-
「負担」という単語の使い方に...
-
まる長についての質問です
-
バイトで使う服は自己負担?
-
乳幼児医療費について
-
歓送迎会のキャンセル料について
-
遠方の友達(異性)と遊びます。 ...
-
経済用語について
-
八王子近郊で評判の良い皮膚科...
-
チケット代、どうしたらいいで...
-
救急車利用にかかる必要
-
救急車搬送 同乗医師の帰りのタ...
-
医療費控除 遠隔地の病院へ行...
-
夜間診療代は医療費控除の対象...
-
県民共済は親知らずの入院して...
-
持病がある場合の海外移住につ...
-
無知で分からないので教えてく...
-
保険証
-
退職→国保未加入→再就職(社保...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アプリを入れたり消したりを繰...
-
家族旅行は何歳まで親が負担し...
-
「負担」という単語の使い方に...
-
子ども子育て拠出金の端数処理根拠
-
チケット代、どうしたらいいで...
-
経済用語について
-
職場での人間関係
-
保証期間内の修理品の送料自己...
-
船員保険下船後3ヶ月について
-
まる長についての質問です
-
県外遠征の費用負担について
-
初期不良品を返送する送料について
-
白内障の手術費用って、いくら...
-
賃貸アパート退去時(たばこの...
-
単身赴任者の帰省回数 (月間)
-
社員旅行って今時世の中あるの...
-
「当社負担」の英単語を1文字...
-
歓送迎会のキャンセル料について
-
病院や薬局の点数の金額を教え...
-
遠方の友達(異性)と遊びます。 ...
おすすめ情報