
No.3ベストアンサー
- 回答日時:
こんにちは
20日を10人×2回ということなので、丁度ぴったりなのですが、ランダムに埋めてゆくと他の条件から上手くいかず再試行が必要な場合もありますけれど、以下ではいかがでしょうか?
(上手くいくようにしてしまうことも可能とは思いますが、そうすると段々ランダムではなくなってきてしまいますので、この方式にしてあります)
条件がそれなりに複雑なのと、「出勤不可日」を関数式に組み込んでしまうと、後で習性できなくなるでしょうから、不可日は別入力するようにしてあります。
また、一気に計算式だけで求めると、相当面倒なことになるので作業テーブルを用いています。
添付図では、6~15行目が担当者一覧と、不可日の入力欄で、C6:V15は作業用のテーブルとなっています。
作業用テーブルがうるさければ、この部分だけ別シートにしても良いですし、文字色を背景色と同じにしておけば、見た目は表示されなくなるようにもできます。
1行目C1:V1は日付のつもりですが、1~20の数字(=日付型ではありません)を単純に入力してあります。
担当者の不可日の入力は、単純にカンマ区切りで入力します。無駄なスペース等を入れると判断されませんのでご注意。
添付図では「3,5」、「7」のように入力してあります。
また、必ず計算がうまくいく保証がないので、リトライが必要かどうかの判断用に、A2セルに式を入れてあります。(リトライが必要な場合は、「要再試行」の表示になります)
前置きはこのくらいにして・・
添付図では、
・C1:V1に1~20の数値(日付ではありません)
・担当一覧(A6:A15)に担当者の名前
・不可日(B6:B15)に勤務不可の日(カンマ区切り)
をあらかじめ入力しておきます。
・作業テーブルのC6セルに
=IFERROR((FIND(","&C$1&",",","&$B6&",")=0)*1,1)*(COUNTIF(OFFSET($A$2,,MAX(COLUMN()-4,1),1,MIN(COLUMN()-2,3)),$A6)=0)*(COUNTIF($B$2:B$2,$A6)<2)
の式を入力し、C6:V15までフィルコピーします。
(ご提示の条件を式にしたもので、勤務可能ならば「1」が表示されます)
(結果的に、後ろの方になると「1」の数は減ってゆくことになります)
・C2セルに
=INDEX($A:$A,AGGREGATE(15,6,ROW(C6:C15)/(C6:C15=1),RANDBETWEEN(1,COUNTIF(C6:C15,1))))
を入力して、C2:V2にフィルコピー。
(計算としては、作業テーブルの「1」の人からランダムに選出しています)
・チェックのため、A2セルに(必要なければ、これは省略できます)
=IF(SUMPRODUCT(ISERROR(C2:V2)*1)>0,"要再試行","OK")
を入力します。
※ 以上ですが、randbetween関数を用いているため、シート上の空きセルなどに何か入力する毎に、表示内容が(再計算されて)変わりますのでご注意ください。
※ 上記を逆用して、A2セルの表示が「要再計算」の場合は、シート上の空きセルに何かを入力したり消したりして、再計算を試みてください。
(何度かトライすれば、上手く計算できる結果が得られるはずです)

ご回答ありがとうございます。うまくいきました!
要再試行の数式までつけて頂き、ありがとうございます。
大変助かりました。
お忙しい中、本当にありがとうございました。
No.2
- 回答日時:
済みません。
チェック不十分で投稿しました。30行目の式で、35行目の候補から選択する式になっていて、結果が狂っていました。
30行目の式は、36行目の候補から選択するのが正しいです。

No.1
- 回答日時:
回答がすぐにつかないのは、EXCELの関数だけでやろうということに、無理があるとか、面倒なことになるとかではないかと想います。
添付画像でも一応できます。 かなり、面倒です。
なお、総員10名で、勤務は3日の空きをおく、1日に2名は詰める、希望休日は叶えるという条件だと、一発の乱数ではうまく当番を指定できず、数度乱数を発生させなおす(空いているどこかのセルに何か入力させるだけです)必要があるでしょう。
最終的に乱数を使いますが、その前段階で、当日に勤務可能な候補メンバーリストを作成し、その候補から乱数で一人を選ぶという方式がいいのではないかと思いました。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【初月無料キャンペーン実施中】オンライン健康相談gooドクター
24時間365日いつでも医師に健康相談できる!詳しくはコチラ>>
-
当番表の作成
Excel(エクセル)
-
エクセルで22時~6時とそれ以外の勤務時間を分けたいです。
Excel(エクセル)
-
EXCEL 指定した曜日に番号を振って、最大値までいったら1に戻る当番表
Excel(エクセル)
-
4
エクセルの使い方で教えて頂ければと思います 2つの表があります A B C D 10 20 30 4
Excel(エクセル)
-
5
エクセルで勤務時間の計算をしています。 下記図でstartは勤務開始時間、endは勤務終了時間です。
Excel(エクセル)
-
6
エクセルの関数
Excel(エクセル)
-
7
Excel 表の作成について
Excel(エクセル)
-
8
エクセルで手数料分を各部署に振り分けたいの ですがどういう計算式をつかいますか? やり方を教えて欲し
Excel(エクセル)
-
9
エクセルでシフト表を作成中で困っています。
Excel(エクセル)
-
10
Countifよりも早く重複数をカウントする方法ありますか?
Excel(エクセル)
-
11
給与計算表で縦計(SUM関数)と合計が少し合わない(数円)
Excel(エクセル)
-
12
赤い部分のセルを、下のもの(B)と同じ状態にしたい
Excel(エクセル)
-
13
数式をおしえてください
Excel(エクセル)
-
14
複数のセルでの文字判定について
Excel(エクセル)
-
15
Excelの2010がパソコンに入ってるんですがこれって使えるんですか?? 買ってずっと使ってないの
Excel(エクセル)
-
16
至急!!!エクセルについて
Excel(エクセル)
-
17
Excelの文字入力にタイムラグがある時の原因と対処法
Excel(エクセル)
-
18
エクセル 条件に合う日付に入力された時間数の合計したい
Excel(エクセル)
-
19
Excel 数式を使用した条件付き書式が、一つのセルにしか反映されない
Excel(エクセル)
-
20
Excelの条件付き書式
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
このカテゴリの人気Q&Aランキング
-
4
エクセルでマウスカーソルの形...
-
5
EXCELで2つの数値のうち大きい...
-
6
EXCELで2列を参照し、重複する...
-
7
エクセルの2ページ目の作り方
-
8
(Excel)あるセルに文字を入力...
-
9
Excel 書式を関数で判断。
-
10
エクセルのセル内の余白の設定...
-
11
Excelで数式だけを消して、数値...
-
12
グラフの横・縦項目が全部表示...
-
13
セル入力文字が、「右のセルに...
-
14
VBAで保存しないで閉じると空の...
-
15
エクセルの画面で十字マークが...
-
16
エクセルで作った新しいウイン...
-
17
特定セルの内容を更新したら、...
-
18
Excel に貼り付けた図形が、保...
-
19
Excelで隣のセルと同じ内容に列...
-
20
関数を使わずに一括で全角を半...
おすすめ情報
公式facebook
公式twitter