エクセルで当番表をつくりたいのですが、簡単な関数を使ってできません。私のレベルは中級くらいです。当番表の内容は、21名がそれぞれ所有する田んぼの面積に応じて田んぼの水を入れる当番です。当番は二人一組で、行います。面積の広い人は、回数が多く、少ない人は回数が少なくあたるようにします。公平なものにならなくてはいけません。3~4か月間の毎日です。同じ面積の人も10名位いるので、私は、全体面積に対する割合を出して、間隔日数を出す。後・・それぞれの割当たる間隔日数を崩さずに当たるようにする。・・・などあるのですが、・・私には、難しいので、どうかそんなの簡単だと思われる方は、至急回答お願いします。できたら、私でも理解しやすい表現で回答いただけたら、うれしいです。よろしくお願いします。
No.1
- 回答日時:
等間隔の日数という考えでは、うまくいくとは思えません。
まず、期間が3~4か月間とありますが、おおよその全体日数を求めてください。
その後、各人の負担日数を計算します。
例えば、Aさんの負担日数は次のようになります。
=全体日数×2×Aさんの田んぼ面積÷田んぼ面積合計
端数は四捨五入します。
四捨五入の関係で、負担日数の合計が全体日数×2にはほとんどならないと思います。その場合は、全体日数を入力し直して調整します。小数点以下にも入力すれば微調整ができます。
後は、各人の負担日数を満たすようにスケジュールを割り振ります。
この回答への補足
全体日数を決めて回答のようにしました。負担日数もでましたが、さて、そこからがわからないのです。全体日数は、180日(90*2)なのですが、どのように割り振ればよいのでしょうか?個人の割り振られる日が近すぎたり、日数が空きすぎたりせずに、当たるようにするには?
また、二人がペアなので、二つのグループに分けた場合、同じ人が同じ日に当たったり、翌日にまた当たったりせずに、個人個人のおおよその間隔日数を維持しながら割り当てることはできるでしょうか?簡単な関数など使えるのでしょうか?入力規則は?オートフィルで同じ人が近い日に入力できなくすることは?説明が下手なので、わかりにくいとはおもいますが、是非、是非回答よろしくお願いします。
No.2
- 回答日時:
ところで今回の相談は、単純な関数だけでは無理で、マクロの出番になりそうな規模の話では?関数の魔術師みたいな人だったら、マクロを使わずに何とかしちゃうかも知れませんが。
負担日数を均等割にするだけなら、全体日数/負担日数で求まります。端数は最終日で処理でしょうか。ただし単純に均等割にしただけだと、必ずどこかで重複したり、逆に誰もいない日ができると思われるため、そこは手動で調整するしかありません。もし期間中に1回とか2回しか当たらない家があるなら、そうした日の調整に入ってもらうのが楽そうです。そこは世話役さんの腕の見せ所かも。
もしかして、次のリンク先が役に立ちませんか?Excelを使って勤務表を作成する方法の解説と、フリーの勤務表作成支援ツールを紹介・配布しています。30名まで対応しているため、ちょうど今回の話に応用できそうだと思いました。
http://members.at.infoseek.co.jp/kenchan_h/index …
ありがとうございます。そうですか・・・魔術師ですか・・
参考のページをゆっくりとみてみたいとおもいます。
ありがとうございました。
No.3
- 回答日時:
ANo.1です。
手作業で、負担日数の多い順に一人ずつ、おおよそ等間隔になるように割り振るよりないと思いますが。
これ以上のことは私には分かりません。
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.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か月以上の悩みが一発解決です。
ありがとうございました。
厚かましく、説明もよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで当番表を作成したいです。 1 2023/08/09 19:53
- Excel(エクセル) 当番表の作成 2 2022/06/15 07:40
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- 計算機科学 2500円の人と2000円の人の集計 2 2023/08/06 07:18
- 高校受験 数学の問題いくつか捨てても大丈夫?残り1ヶ月、点数が取れない教科ばっか勉強しても大丈夫? 高校受験 2 2023/01/07 17:55
- Excel(エクセル) エクセルで不可日と祝祭日の考慮してランダムに毎日の当番表を作成したいと思っています。 1 2023/07/12 21:14
- 温泉 なぜ温泉地の数のランキングで北海道が1位とされているのでしょうか? 14 2023/04/12 14:45
- 楽器・演奏 ★ピアノで曲が弾けるようになるには?等の質問に対する回答について 7 2022/04/08 05:51
- 野球 野球。内外野の中継プレイの野手のポジショニングについて 4 2022/07/09 18:48
- 医療・安全 ウクライナって3分の1ぐらいしかワクチン打ってないし マスクしてない人が多いけど、感染してるの? 1 2022/05/13 20:46
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
エクセルで少し複雑な当番表を作成したい。
Excel(エクセル)
-
エクセル 当番表の作り方 エクセルで土日祝日を除いた、平日のみの当番表を作りたいです。 カレンダーま
Excel(エクセル)
-
Excelで当番表の作成(休み考慮、完全ランダム)
Excel(エクセル)
-
-
4
当番表を作りたい
Excel(エクセル)
-
5
仕事のシフトを組むときに、シフトが同じになる回数を均等にしたいんですが
Excel(エクセル)
-
6
エクセルで作成したカレンダーに「当番の名前」を自動的に入力する方法をお
その他(Microsoft Office)
-
7
VLOOKUP関数を使い掃除当番表を作る
その他(Microsoft Office)
-
8
エクセル 年間の当番表 ローテーションに振り分ける方法がわかりません。
Excel(エクセル)
-
9
エクセルで当番表を作成したいです。
Excel(エクセル)
-
10
人員ペア一覧表を作成したいです。
Excel(エクセル)
-
11
エクセルでシフトをランダムで作るにはどうしたらいいでしょう
固定IP
-
12
エクセルで旗当番表を作っています あとひといきなんですができません
Excel(エクセル)
-
13
当番表の作成(休み考慮あり、ランダム)
その他(コンピューター・テクノロジー)
-
14
エクセルで不可日と祝祭日の考慮してランダムに毎日の当番表を作成したいと思っています。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アプリを入れたり消したりを繰...
-
「負担」という単語の使い方に...
-
経済用語について
-
コロナ治療薬
-
子ども子育て拠出金の端数処理根拠
-
エクセルで当番表をつくりたい...
-
医療費。診療明細書の点数と値...
-
歓送迎会のキャンセル料について
-
自立支援なのに3割負担?上限は?
-
私は51歳で独身です。意識を失...
-
消費者水準指数とは何でしょう...
-
船員保険下船後3ヶ月について
-
まる長についての質問です
-
続日本紀について
-
海外赴任中の医療費負担に関す...
-
給料泥棒・社内ニートの同僚の...
-
75歳以上、低所得なのに3割負担?
-
精神の自立支援【医療費が3割...
-
家族旅行は何歳まで親が負担し...
-
医療費請求明細書 で金額を知り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「負担」という単語の使い方に...
-
アプリを入れたり消したりを繰...
-
まる長についての質問です
-
こちらの意味がわからなくてい...
-
経済用語について
-
家族旅行は何歳まで親が負担し...
-
消費者水準指数とは何でしょう...
-
子ども子育て拠出金の端数処理根拠
-
医療費の計算のやり方、保険3...
-
私は51歳で独身です。意識を失...
-
チケット代、どうしたらいいで...
-
エクセルで当番表をつくりたい...
-
精神の自立支援【医療費が3割...
-
へんな話をしますが、吊り革を...
-
来年開催の大阪万博は中止にな...
-
保証期間内の修理品の送料自己...
-
医療費。診療明細書の点数と値...
-
県外遠征の費用負担について
-
船員保険下船後3ヶ月について
-
白内障の手術費用って、いくら...
おすすめ情報