• 締切済み

Excelで勤務表の勤務記号をランダム作成するには

   1 2 3 4 5・・・・ 山田 A A 佐藤 C A 田中 D B 鈴木 B B =IF(D$6="","",IF(COUNTIF($AJ8:$AN8,D$6)>0,"休",SWITCH(RANDBETWEEN(1,5),1,"A",2,"B",3,"C",4,"D",5,"))) この式だと1日に同じ記号がダブったりします。(2の下のように) 上記のような勤務表でランダムに1日A~Dが各1回しか出ないようにしたいのですが、その様にするにはどうすればいいでしょうか? (1の下のように) 説明が分かりにくく申し訳ございません。

みんなの回答

  • keimori01
  • ベストアンサー率74% (69/93)
回答No.3

他の回答者の方の回答を見ていたら、思いついたのでポストしておきますね。8行目から11行目を作業用に使っています。 まず、B8:B11に「=RAND()」と入力し、必要なだけ右にもコピーしておきます。 セルB2に以下の関数を入力します。あとはB3からB5までオートフィル、B2:B5を右へオートフィルすればOKです。 =IFS(RANK.EQ(B8,B$8:B$11)=1,"A", RANK.EQ(B8,B$8:B$11)=2,"B",RANK.EQ(B8,B$8:B$11)=3,"C",TRUE,"D") 考え方としては、乱数を4つ発生させて、それぞれのメンバーに割り当てます(作業用)。それをRANK.EQ関数で順位を求め、IFS関数で1位をA、2位をB、3位をC、残りをDにしました。 なお、セルを編集モードにしてから元に戻すと、乱数が再度計算されるので表示が変わります。

  • SI299792
  • ベストアンサー率48% (713/1474)
回答No.2

AJ8:AN8,D6にどのような情報が入っているのか判らない。 この数式は変(エラーになり入力できない) どこに入っているか判らないので 画像のような表で、A~Dが1回だけランダムで出る方法です。 11~14行をワークエリアに使います。目障りなら非表示にして下さい。 C3: =CHAR(RANK(C13,C$13:C$16)+64) 右下へコピペ。 C13 =RAND() 右下へコピペ。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

しばらくの間、回答が出るか、様子を見ていたが、出てない。 この問題は難しいよ。質問者は簡単そうに質問を出しているように見えるが、 そもそも、数学的には、ランダムなものを出して(背後には数学的なプログラム処理が行われているのだが)も、同じもの(文字)が(確率はそれなりに少ないが)4連することも(例 AAAA)あることを、質問者は、わかってないのでは。  それと組み合わせの問題に絡んでくると思うが、4文字ぐらいなら、プログラムで求められる(解説のVBAコードがWEB記事で見つかる)が、数が増えると、すぐ膨大な数になって、手に「おえりゃーせん」ことになる。 ーー 質問例は、簡単にすることが多いし、それでよい場合が多いが、本件では、 (1)担当する見込みの人数は何人いて、 (2)仕事のタイプは何種類か、 (3)一日に重複はあり得ない、 (4)実際は4人の中で休む予定が居たり、この人はこの仕事はしない、などないものとするでOKとか、 などな明言しないと、回答も出しずらいと思うが。 === 私は質問者が、組み合わせを(人知絞って・事情加味して、作り)表にして、それの一組を引っぱってくる、仕組みにする、のがよいのではと思う。 ぐらいがよいのではと思う

関連するQ&A

  • エクセルで、次のような自動入力をしたい

      A    B    C    D   E  ・・ AA 1 田中 鈴木 佐藤          山田 2 鈴木 山田              海岡 3 田中 佐藤              佐藤 というような表があり、AAの列に名前を入力したとき、 D1に「山田」、C2「海岡」と、その行に関してAA列に新規の名前が入力されたときにD1,C2に自動入力することは、VBAで簡単にできますか? 3列目には「佐藤」さんがすでいるので入力不要です。 よろしくお願いします。(マクロ初心者です)

  • エクセルで一覧作成

    エクセルで一覧作成 エクセルで以下のデータを作成したいのですが どのような関数を使用したらよいのでしょうか?    A   B  C  D 1 東京 田中 鈴木 小林 2 東京 鈴木  3 大阪 伊藤 鈴木  4 東京 佐藤 5 三重 小林 田中        ↓    A   B   C   D   E   F   G 1 東京 田中 鈴木 小林 鈴木 佐藤 2 大阪 伊藤 鈴木 3 三重 小林 田中 よろしくお願いします。

  • エクセルで条件に一致したセルの隣のセルを取得したい

    下のような「得点」という名前のシートがあります。 (「田中」のセルがA1です。)  [ 田中 ][ 10 ][ 200 ]  [ 山田 ][ 21 ][ 150 ]  [ 佐藤 ][ 76 ][ 250 ]  [ 鈴木 ][ 53 ][ 350 ] 別のシートのA1セルに、「佐藤」と入力すると、  [ 佐藤 ] 「得点」シートから「佐藤」の列を見つけて、B1、C1に  [ 佐藤 ][ 76 ][ 250 ] のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。 「得点」シートでは氏名が重複する事はありません。 IF文を使うと思うのですが、いまいち良く分かりませんでした。 よろしくおねがい致します。

  • エクセルで2つの条件を元に

    エクセル2007で名簿を作っています。 1ヶ月ごとにメンバーの順が変わります。 シート1(番号順に名簿を作りました)   A  B   C  1 1     山田 2 2     木村 3 3 副長 佐藤 4 4     鈴木 5 5 班長 田中 6 6     長田  シート2(こちらがメンバーに配る名簿です)   A   B  C   D 1 班長    1    3 2 田中    山田  鈴木 3 4 副長    2    4 5 佐藤    木村  長田 A2に田中,A5に佐藤を選んでくるのはvlookupで成功しました。 質問したいのは C列D列に上記の番号のようにシート1の名前を入れていきたいのですが,田中,佐藤の分を抜いた上で番号の若い順に選んできたいのです。 どのような関数をどのように使えば成功するでしょうか。  

  • エクセルのデータ並べ替え(抽出)の方法

    エクセルのデータ並べ替え(抽出)の方法 を教えてください。 下記のようなデータがあるとします。   A    B    C   D 1 田中  東京  千葉  福岡 2 山田  京都  滋賀 3 佐藤  奈良  青森  USA 4 鈴木  カナダ 愛媛 A列は名前、B列以降は文字列です。B列以降はC列までの行、D列までの行とさまざまです。重複セルはありません。 これを下記のように並べ替えたいです。   A    B    C   D 1東京  田中 2千葉  田中 3福岡  田中 4京都  山田 5滋賀  山田 6奈良  佐藤 7青森  佐藤 8USA   佐藤 9カナダ 鈴木 10愛媛  鈴木 こういうことは可能でしょうか??? 教えてください。 よろしくお願いします。

  • エクセルでランダムに並び替える方法

      A  B  C 1 A組 石井 1 2 A組 伊藤 2 3 B組 山下 3 4 B組 佐藤 1 5 C組 吉田 2 6 D組 鈴木 3 と記載したシートで、AとB列をランダムに並べ替えて   A  B  C 1 B組 佐藤 1 2 C組 吉田 2 3 D組 鈴木 3 4 A組 伊藤 1 5 A組 石井 2 6 B組 山下 3 のように班を決定することは関数では可能ですか? 過去ログを色々見たのですが、いまいちよくわからなかったので、トピ作成してしまいました。

  • 表から別シートに一覧表を作成したいのですが

    Excel2003にて複数店舗のシフト管理をしているのですが、 初心者のうえ独学で学んだ為全く分かりません。 縦に日付、横に人が並んでいる表といえば分かりますか? A1="日"、A2=1、A3=2… B1="佐藤"、B2="山田"、B3="鈴木" その交点にその人が行く店舗名が表示されている表を作成しています。 日 佐藤 山田 鈴木 1 A店  B店 2 C店      A店 そのデータから、 日付 応援に行く人 応援をもらう店舗 1   佐藤       A店 1   山田       B店 2   佐藤       C店 2   鈴木       A店 の様な表に変換しています。今までは手入力で変換していたため、 ミス等がないかチェックが大変で困っています。 何か良い方法がありましたら教えてください。 質問も初めてで分かりにくい所があるかもしれませんが よろしくお願いします。

  • エクセル2003で勤務シフト表を作成 退勤時刻を表示させる関数を探しています。

    エクセル2003にて、職場の勤務シフト表を以下のように作成中です。   A   B   C   D   E   F   G   H   I   J   1     出   退   14   15  16   17  18  19  20 2山田  14  18   A   A   B   B 3佐藤  15  19       B   A   A   A 4鈴木  5福田  16  20           C   C   C   C 6             14   15  16   17  18  19  20 この様な形式です。 1.D2:J5セルには、ポジションの略称が入ります。  (例:2行の山田さんは14時~16時までAポジション、16時~18時までBポジション。4行の鈴木さんはこの日はお休み)  2.各時間帯の適正人数を考えながら、D2:J5セルにポジション略称でシフトを入力していきます。 3.上記2.の作業後、出勤時刻をB列に、退勤時刻をC列に自動的に表示されるようにしたいのです。   4.出勤時刻に関しては、なんとか自身で調べてB2セルの場合、   =IF(COUNTBLANK(D2:J2)=7,"",HLOOKUP("*",$D2:$J$6,7-ROW(),FALSE)) とすることで解決できました。 【ここから困っています。】 5.退勤時刻も同じように自動表示させたいのですが、ここで行き詰ってしまいました。   解決策をお教えいただけると助かります。   宜しくお願いいたします。        

  • EXCELで勤務表作成

    勤務表の作成をエクセル2003で作成しています。     1 2 3 4 5 ・・ 鈴木  A A B B 休 佐藤  B B 休 休 A 太田  休 休 A A B 吉田  A B 休 B A 上記のように個人別にその日に何の担当業務をするかで作成されたものを   11月1日        11月2日    ・・・  A 鈴木 吉田      A 鈴木  B 佐藤         B 佐藤 吉田  休 太田         休 太田 と日付ごとに業務別に誰が担当するのか別の表で作成する方法があったら教えて下さい。「最初からその表で作成すれば?」とお思いになるかもしれませんが、大人数の休日の管理が難しいので最初の表の作成方法は変えたくありません。ちなみに表の通り一つの業務に複数名担当することもありえますので、できればそれをふまえた上で回答願います。

  • EXCELの関数の入力の仕方

    私の知識不足の為どうすればいいのか困っています。どうぞお願いします。 シート1に   | A  | B | C | D | --|-----|----|----|----|--- 1 |田中 |   |   |   | --|-----|----|----|----|--- 2 |佐藤 |   |   |   | --|-----|----|----|----|--- 3 |鈴木 |   |   |   | --|-----|----|----|----|--- 4 |山田 |   |   |   | シート2に   | A  | B | C | D |  E |  F    --|-----|----|----|----|----|---- 1 |    | 1  | 2  | 3  | 4   | 5 --|-----|----|----|----|----|---- 2 |田中 |   |   |   |   |   --|-----|----|----|----|----|---- 3 |佐藤 |    |   |    |   |   --|-----|----|----|----|----|---- 4 |鈴木 |    |   |    |   |  --|-----|----|----|----|----|---- 5 |山田 |    |   |    |   | とあったとします。(シート2の横に並んだ数字は日にちです。) (シート1は入力用シート、シート2は印刷用シートとして使います。) 例題として、田中さんは2日と3日が入院。5日が外出すると仮定して、 シート1のB1に"2n"、C1に"3n"、D1に"5g"と入力したら、 シート2のC2に"入"、D2も"入"、F2が"外"と表示させたいの です。 色々試行錯誤しましたが、一向にできず、困っています。 お手すきの時がありましたら、回答お願い致します。

専門家に質問してみよう