No.3ベストアンサー
- 回答日時:
大分苦労しましたがやっと出来上がりました。
次のようにすればよいでしょう。毎月ごとに当番を組みなおしている場合には当番に偏りが出ることが考えられますので、また、ランダムなデータはシートにデータなどの入力などの操作が有った場合には組み合わせが変わってしまいます。そこで作業用のシート(シート2)に当番を決めるために必要なデータをランダム操作で並べたのちにそのシートをコピーして値として別のシート(シート3)に貼り付けます。それによってシート上に新たな入力が行われても組み合わせが変わらなくなりますのでその別のシートを元にお求めのシート(シート1)を作成することにします。
シート1ではA1セルに日にちと入力し、B1セルには8月1日からの日付にするのでしたら2012/8/1と入力します。
C1セルには次の式を入力して右横方向にドラッグコピーします。
=IF(B1="","",IF(MONTH(B1+1)=MONTH($B$1),B1+1,""))
これでその月の月末の日付までが表示されます。
次にB1からAF1セルを選択して右クリックして「セルの書式設定」から「表示形式」の「ユーザー定義」で d"日"とします。これで1日、2日・・のように表示されますね。
A2セルには曜日と入力し、B2セルには次の式を入力して右横方向にドラッグコピーします。
=IF(B1="","",TEXT(B1,"aaa"))
A3セルから下方には氏名を入力します。必ず入力してから次のシート操作に移ってください。氏名は暫定的な入力で構いません。
シート2ではA1セルには例えば2012/8/1のように日付を入力して右横方向にドラッグします。数か月分を表示するようにしても構いません。
A2セルには次の式を入力して横方向にドラッグコピーしたのちに下方にもドラッグコピーします。
=IF(ROW(A1)>COUNTA(Sheet1!$A$3:$A$100),"",IF(COLUMN(A1)=1,IF(ROW(A1)=1,"●",RAND()), IF(COLUMN(A1)<COUNTA(Sheet1!$A$3:$A$100),IF(COUNTIF($A2:OFFSET(A2,0,-1),"●")>0,"",IF(OFFSET(A2,0,-1)=MAX(OFFSET(A$2,0,-1):OFFSET(A$2,100,-1)),"●",RAND())),IF(COLUMN(A1)=COUNTA(Sheet1!$A$3:$A$100),IF(OR(OFFSET(A2,0,-1)="",OFFSET(A2,0,-1)="●"),RAND(),"●"), IF(MOD(COLUMN(A1)-1,COUNTA(Sheet1!$A$3:$A$98))+1=1,IF(OFFSET(A2,0,-1)=MAX(OFFSET(A$2,0,-1):OFFSET(A$2,100,-1)),"●",RAND()),IF(MOD(COLUMN(A1)-1,COUNTA(Sheet1!$A$3:$A$100))+1<COUNTA(Sheet1!$A$3:$A$100),IF(COUNTIF(OFFSET(A2,0,-MOD(COLUMN(A1)-1,COUNTA(Sheet1!$A$3:$A$100))):OFFSET(A2,0,-1),"●")>0,"",IF(AND(OFFSET(A2,0,-1)<>"",OFFSET(A2,0,-1)=MAX(OFFSET(A$2,0,-1):OFFSET(A$2,100,-1))),"●",RAND())),IF(MOD(COLUMN(A1)-1,COUNTA(Sheet1!$A$3:$A$100))+1=COUNTA(Sheet1!$A$3:$A$100),IF(OR(OFFSET(A2,0,-1)="",OFFSET(A2,0,-1)="●"),RAND(),"●"))))))))
その後にシート2全体を選択して「コピー」し、次にシート3を選択します。シート3のA1セルを選択したのちに「形式を選択して貼り付け」から「値」にチェックをして貼り付けます。
これによてランダムな配置が変化することのないシートが完成します。このシートを元にシート1の表を次の操作によって完成します。
シート1のB3セルには次の式を入力して右横方向にドラッグコピーしたのちに下方向にもドラッグコピーします。
=IF(OR(B$1="",$A3=""),"",IF(INDEX(Sheet3!$A$2:$XX$100,ROW(A1),MATCH(B$1,Sheet3!$1:$1,0))="●","●",""))
シート3の1行目に表示されている日付に基づいた組み合わせが表示されることになります。
同じ組み合わせのままで良ければ、シート3にシート1に合致する日付が無くともシート3の1行目の日付を手動で変えることによって対応することができます。
No.2
- 回答日時:
当番日そのものを完全にランダムにしますと、当番となる日数が人によって異なって来てしまいますので、掃除当番を行う順番をランダムに決まる様にされては如何でしょうか?(この方法でも月の変わり目で、当番を行う日数に差が生じてしまう恐れがありますが)
今仮に、Sheet2のA列とB列を作業列として使用して、Sheet1に当番表を作成するものとします。
まず、Sheet2のA5セルに次の数式を入力して下さい。
=IF(INDEX(Sheet1!$A:$A,ROW())="","",RAND())
次に、Sheet2のB5セルに次の数式を入力して下さい。
=IF(ISNUMBER($A5),RANK($A5,$A:$A),"")
次に、Sheet2のA5~B5の範囲をコピーして、同じ列の6行目以下に貼り付けて下さい。
次に、Sheet1の
B1セルに 年
D1セルに 月掃除当番表
A3セルに 日付
A4セルに 曜日
と入力して下さい。
次に、Sheet1のB3セルに次の数式を入力して下さい。
=IF(ISNUMBER(($A$1&"/"&$C$1&"/"&COLUMNS($B:B))+0),IF(MONTH(($A$1&"/"&$C$1&"/"&COLUMNS($B:B))+0)=$C$1,($A$1&"/"&$C$1&"/"&COLUMNS($B:B))+0,""),"")
次に、Sheet1のB3セルをコピーして、Sheet1のB3~AF4の範囲に貼り付けて下さい。
次に、以下の操作を行って下さい。
Sheet1のB3セルにカーソルを合わせて、マウスを右クリック
↓
現れた選択肢の中にある[セルの書式設定]をクリック
↓
現れた「セルの書式設定」ダイアログボックスの[表示形式]タブをクリック
↓
現れた「分類」欄の中にある[ユーザー定義]をクリック
↓
現れた「種類」欄に
d
と入力
↓
「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック
↓
Sheet1のB4セルにカーソルを合わせて、マウスを右クリック
↓
現れた選択肢の中にある[セルの書式設定]をクリック
↓
現れた「セルの書式設定」ダイアログボックスの[表示形式]タブをクリック
↓
現れた「分類」欄の中にある[ユーザー定義]をクリック
↓
現れた「種類」欄に
aaa
と入力
↓
「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック
次に、Sheet1のB5セルに次の数式を入力して下さい。
=IF(AND(INDEX($3:$3,COLUMN())<>"",MOD(COLUMN()-COLUMN($B$3),COUNT(Sheet2!$B:$B))+1=INDEX(Sheet2!$B:$B,ROW())),"●","")
次に、Sheet1のB5セルをコピーして、Sheet1のC5~AF5の範囲に貼り付けて下さい。
次に、Sheet1のB5~AF5の範囲をコピーして、同じ列の6行目以下に貼り付けて下さい。
後は、Sheet1のA5以下に各当番担当者の名前を入力してから、A1セルに西暦年、C1セルに月を入力しますと、当番準がランダムに決められた当番表が表示されます。
尚、この方法では、何処かのセルに入力を行ったり、ファイルを開き直したり、F9キーを押したりする度に当番表が自動的に書き換わってしまいます。
これを防ぐためには、Excelの「計算方法の設定」を[手動]とされた上で、[ブックの保存前に再計算を行う]という箇所のチェックを外して下さい。
そして、「計算方法の設定」を[手動]とした場合において、表を変更する等のために再計算を行うためには、F9キーを押せば再計算が行われます。
この回答へのお礼
お礼日時:2012/08/14 16:11
お礼が遅くなり申し訳ありません!
とても丁寧にご回答してくださり
ありがとうございました。
この手順でやっていったら出来ました!
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで不可日と祝祭日の考慮してランダムに毎日の当番表を作成したいと思っています。 1 2023/07/12 21:14
- 数学 既存の数列のランダム性について(初歩的質問) 2 2022/06/07 20:04
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- 求人情報・採用情報 シフト勤務について 2 2023/08/05 16:53
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) エクセルのデータ整形について 3 2022/11/12 00:27
- 知人・隣人 一軒家、ゴミ捨て場掃除当番について。 一軒家に住んで5年になります。年に2回ほどゴミ捨て場の掃除当番 2 2022/05/21 10:53
- Excel(エクセル) 「休日取得希望日」を申請したらシフト表に色付け 1 2022/04/17 14:22
- Excel(エクセル) 当番表の作成 2 2022/06/15 07:40
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名やフォルダ名に頼ら...
-
ノートパソコンのバッテリーが...
-
異なる2つのファイルがSHA-512...
-
Windowsのエクスプローラーで大...
-
合計3TBのデータのハッシュ値を...
-
どのストレージが一番高い所か...
-
powershellについて。
-
このパソコンは重量が689gと非...
-
iCloudに6千個くらいデータがあ...
-
SSDのデータがビット落ちにより...
-
すみません!パソコン開いて電...
-
CrystalDiskInfoは大企業で使わ...
-
SSDにTRIMってした方が良いので...
-
Crystal DiskInfoの生の値は既...
-
ロジクールのマウスはチャタリ...
-
数日前から急にFBが前に進まず...
-
現在と現在から20年前の2003〜2...
-
SSDに不良セクタが発生したら、...
-
回復ドライブにするUSBメモリの...
-
Windows11Proのパッケージ版のU...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows 11の品質、評判は・・...
-
メーカー製のノートパソコンが...
-
ベリファイは光学ディスクには...
-
ベリファイよりコンペアの方が...
-
バグの被害に遭わないようにす...
-
PCの寿命は平均3年?:本当で...
-
USBポートのイベントログが大量...
-
住所から直線距離を算出したい...
-
インストールが不要なソフトは...
-
HEVCのファイルの拡張子って何...
-
ソフトが正常に動作しなくなっ...
-
回復ドライブを作成する前にUSB...
-
2つのフォルダ内にある全てのフ...
-
日本語版Windowsで英語のソフト...
-
高速スタートアップは無効にし...
-
パーティションで分ける事によ...
-
メーカー製のノートパソコンに...
-
ソフトはVectorでダウンロード...
-
回復ドライブをUSBメモリで作っ...
-
インストールが必要なソフトと...
おすすめ情報