• ベストアンサー

エクセルでシャッフル

こんばんは。エクセルのことについてお伺いします。以下の画像のように、3/6(月)の1階がAさん、同じ日の2階がBさん・・・と言うように振り分けたとします。 このそれぞれ、Aさん・Bさん・Cさんをシャッフルするにはどのようにすればよいのでしょうか。乱数のようにF9キーで、シャッフルできるといいのですが。

質問者が選んだベストアンサー

  • ベストアンサー
  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

VBAの方が良いでしょうね 書けますか? データ構造として 三つの、要素数の 相互接続リスト形式 加えて、 入り口、出口の、 ノードを、持たせる と、し リストは Type 1ノード  後方 As Long  自身 As Long  前方 As Long  氏名 As String END Type type ノードズ  Dim ノード(4) As 1ノード End type また、氏名を 定数で、定義しておく Const 一人目 As String = 一人目の氏名を此処に記載 Const 二人目 As String = 二人目の氏名を此処に記載 Const 三人目 As String = 三人目の氏名を此処に記載 アルゴリズムとして 先ず、リスト構造の、変数構造体 "リスト"を、"ノードズ"のtypeで、作成 カウンターを、Long形式で作成 カウンターに、1を入れる 構造体"リスト"の、値初期化のため …甲 リスト.ノード(カウンター).前方 に、-1 + カウンター を、入れる リスト.ノード(カウンター).自身 に、0 + カウンター を、入れる リスト.ノード(カウンター).後方 に、1 + カウンター を、入れる カウンターを調べ、 5以上なら、次の処理へ そうで無いなら、カウンターに1を足して、甲へ戻る リスト.ノード(1).氏名 に、"入口"を、入れる リスト.ノード(2).氏名 に、一人目を、入れる リスト.ノード(3).氏名 に、二人目を、入れる リスト.ノード(4).氏名 に、三人目を、入れる リスト.ノード(5).氏名 に、"出口"を、入れる リスト.ノード(1).前方 に、-99999を、入れる リスト.ノード(5).後方 に、-99999を、入れる '            此で、リストの初期化終了 1~3の整数の、偽乱数を求め コピーの 入り口ノードから、入り 先に得た、偽乱数値だけ リスト構造の、リンクを辿る たどり着いたノード(以降、甲という)の 手前のノードの 前方を指す、リンクの値を 甲の、前方のノードを 指し示すように、書き換える 甲の前方にあるノードの 後方を示すリンクを 甲の後方のノードを 指し示すように書き換える 甲の、全貌、及び後方のリンクを 何も、指し示していない事を 表す値に、書き換える 甲の値を、セルに書き込む セルを一つ下に移動し 偽乱数を求める最大値を一つ減らし 上記を繰り返す もう一度、 セルを一つ下に移動し 偽乱数を求める最大値を一つ減らし 上記を繰り返す コピーしたデータを、破棄する 以上を、一日分のアルゴリズム と、し 1日から、同月月末日まで 繰り返し 作業を、適用させる

sunsetroad
質問者

お礼

ご回答ありがとうございました。

その他の回答 (1)

回答No.1

「シャッフル」がどうなるかはわかりませんが、 乱数を発生させる関数に 「RAND関数」「RANDBETWEEN関数」というのがあります。 乱数の範囲が決まっているなら、RANDBETWEENのほうが使い易いかもです。   =RANDBETWEEN(1,3) というような感じで使い、上記だと1~3の整数をランダムに返します。 例えばA~Cさんに割り振るのであれば、 それぞれに1~3を当てる形で対応表を作成し(図参照)、 乱数を取りつつ、VLOOKUP関数で抽出しているのがG列です。   G2セル:=VLOOKUP(RANDBETWEEN(1,3),$A$2:$B$4,2,FALSE) こんな感じで「乱数を発生させつつ、対応する人を抽出」してきます。 F9キーでの再計算にも対応します。 が、難が2点ほど。 (1)どこかのセルを編集したりすると新たな乱数が発生   これは、再計算を「手動」にすることでなんとか対応できないこともないです。 (2)完全にランダムなので公平にならない   同じ人(乱数)が4連続したり、1階2階が同じ人なんてこともありえます。   が、人数が増えれば増えるだけ、その確率は下がっていきます。   ・・・当然ではありますが。 参考までにどうぞ。

sunsetroad
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • Excelで乱数によって出た値を相関図に記録していく方法ってありますか?

    Excelの乱数によって表示された値を再計算(F9キー)を押した分だけ記録していく方法はあるでしょうか? 出た値をグラフ(相関図)に記し、残していきたいのです。 しかも、マクロを使わずにできるだけ簡単にやることができれば良いのですが・・・。 例えば、 A1~A2⇒ =RAND() と入力し、次にB列をx座標、C列をY座標として 再計算(F9キー)を押す(1回目)と、 B1⇒ A1セル番地の値 C1⇒ A2セル番地の値 が出て、グラフ(相関図)に1点目が記される。 また再計算(F9キー)を押す(2回目)と、 B2⇒ A1セル番地の値 C2⇒ A2セル番地の値 が出て、グラフ(相関図)に2点目が記される。 また再計算(F9キー)を押す(3回目)と、 B3⇒ A1セル番地の値 C3⇒ A2セル番地の値 が出て、グラフ(相関図)に3点目が記される。 ・・・(以下同様に) 再計算(F9キー)を押すたびにグラフ(相関図)に点が記され、過去に記された点(値)も残るようにしたいわけです。 どうかよろしくお願いします。

  • エクセルの関数やマクロだけで、ランダムな並べ替えをするには?

    エクセルの機能である[データ]-[並べ替え]操作を使わずに、 ランダムなデータの並べ替えをするには、どうしたらいいでしょうか? 例: E列の乱数結果より、D列の内容をB列に並べ替え表示    A  B  C  D  E  F 1  順位 名称 C  場所 乱数   2   1       青森  5   3   2       埼玉  1   4   3       長野  3   5   4       福井  2   6   5       大分  4   7                   ↓    A  B  C  D  E  F 1  順位 名称 C  場所 乱数   2   1 埼玉    青森  5   3   2 福井    埼玉  1   4   3 長野    長野  3   5   4 大分    福井  2   6   5 青森    大分  4   7                   B列への関数入力または簡単なマクロを教えていただけると助かります。 よろしくお願いします。

  • これってexcelでできますか?

    ・16人います。 ・4名×4チームを作ります(チームA-D)。 ・チームは1ヶ月ごとに、シャッフルします。 ・16名のうち、2名だけはチームAのヘッド、Bのヘッドで固定し、 残りを常に被らないようにシャッフルした状態にしたい。 ・3箇月までは手作業で色わけしてシャッフルしましたが、ふとexcelで できるのかな?と思いました。 チームA チームB チームC チームD 1 ○ 2 ______○ 3 _________○ 4 _______________○ 5 ○ 6 ______○ 7 _______________○ 8 ○ 9 ______○ ・ ・ お知恵を拝借願います。

  • エクセルと照合について

    エクセルと照合について 工場に勤務していて、シフト表と給与計算をしています。 エクセルの表がうまく貼りつけられず(列がずれるため)、縦書きですいません。 以下はシート1です。 出勤予定表(A1) Aさん(A2) 1/1(B1)←1/1は日付です。 1(B2) 1/2(C1) 空欄(C2)←休日のことです。 1/3(D1) 3(D2) 1/4(E1) 空欄(E2) 1/5(F1) 1(F2) 1/6(G1) 3(G2) 以下BさんからEさんまで5人分あります。 以下は勤務時間コードです。 1 5:00~13:00 2 8:00~15:00 3 13:00~21:00 以下はシート2に作成している、実際の出勤日です。 Aさん(A2) 1/1(B1)←1/1は日付です。 5:00~13:00(B2) 1/2(C1) 空欄(C2)←休日のことです。 1/3(D1) 13:00~21:00(D2) 1/4(E1) 空欄(C2) 1/5(F1) 5:00~13:00(F2) 1/6(G1) 13:00~21:00(G2) 他にBさんからEさんまで、シート3からシート6まで作成しています。 要は二つのシートをマクロか関数かであっているかどうか照合したのですが、できるのでしょうか。 目視はできるだけ避けたいです。 超初心者ですいません。 お願いします。

  • Excel(2000)のマクロで下記の様にしたいのですが

    Excel(2000)のマクロで下記の様にしたいのですが A1 2009/5/27 (開始) B1 2009/6/3 (終了) A1からB1の日付を 4の行には月 5の行には日を 順に表示させたいのですがどうしたらいいですか? 5 ........ 6 27 28 29 .... 1 2 3 A4 5月 A5 27 B5 28 C5 29 D5 30 E5 31 F4 6月 F5 1 G5 2 H5 3 の様に。 教えてください。お願いします。

  • EXCELの関数についてご教授ください。

    EXCELの関数についてご教授ください。 【質問内容】 以下エクセルのデータがあるとします。 A       B  C  D   E F 2013/10/1 新 100 2013 10 1 2013/10/1 旧 100 2013/10/1 新 101 2013/10/1 新 102 2013/10/1 旧 102 2013/10/1 新 103 2013/10/1 旧 110 2013/10/1 旧 110 2013/10/1 旧 110 2013/10/2 旧 110 ※D1,E1,F1には任意の日付を入力できるイメージ (1) D1,E1,F1にそれぞれ上記の値(2013年10月1日)を入力した場合、 A列が「2013/10/1」かつ B列が「新」の件数は 「4件」 と出力されるようにしたいです。 ※「100」「101」「102」「103」が集計され計4件 ※この場合(B列が新の場合)はC列は同じ値は入らないので考慮しなくてよい (2) D1,E1,F1にそれぞれ上記の値(2013年10月1日)を入力した場合、 A列が「2013/10/1」かつ B列が「旧」で C列が「重複しているものは1件でカウント」すると 「3件」 と出力されるようにしたいです。 ※「100」「102」「110」が集計され計3件 ---------- (1)は以下自力で解決出来るようなのですが、 =SUMPRODUCT((A1:A$10=DATE(D1,E1,F1))*(B1:B10="新")) (2)が難解すぎて質問させて頂きました。 皆様お忙しいところ、大変申し訳ございませんがお力をお借りしたく思います。

  • エクセルでのインデックス関数について

    エクセルで任意の二列からセルの中身を引っ張ってきて組み合わせるものを作成しているのですが、うまくいきません。 以下のページを参考に作成しました http://okwave.jp/qa/q5883947.html 添付画像ではB、C列の2行目に結果が出るようにしてE,F列にランダムに取りたい値、G,H列に乱数を表示させています また、B2のセルには =INDEX($E$2:$F$100,MATCH(MIN(G$2:G$100),G$2:G$100,0),COLUMN(B1)) C2のセルには =INDEX($E$2:$F$100,MATCH(MIN(H$2:H$100),H$2:H$100,0),COLUMN(C1)) と入れてあります なぜエラーが出るのかが全くわからなく、困っています ご存知の方、どうかよろしくお願いいたします

  • ipod touch シャッフル再生について

    iPod touch MC011Jでの、下記の様なシャッフル再生方法を教えて下さい。 (iPod classicだと、シャッフルの単位をアルバムにすると 再生可能でしたが、touchにはその設定がありません) 1.アルバム単位のシャッフル  AアルバムからCアルバム、Fアルバムといった様に  アルバム内は曲をストレート再生で、  アルバムが次々とシャッフルする様にしたい 2.ジャンル内でのアルバム単位のシャッフル  選択したジャンル内で、アルバム単位のシャッフルをしたい 宜しくお願い致します

  • エクセル2010で条件に合った乱数を入れるには?

    エクセル2010で 条件に合った乱数を入れる関数を教えてください。 図の例では、 セルA5が6の乱数の場合、セルB5に1~6の乱数を入れたいです。 セルA5が3の乱数なら、セルB5に1~3の乱数といった具合にしたいのですが、 どのようにすれば出来るでしょうか? ご回答宜しくお願いします。

  • エクセル2010 検索と抽出

    エクセル2010を 使っています。 以前教えていただいた、数式を改変して応用したいのですが、うまくいきません。 やりたいのは画像の処理で、 B83の値を E列から探しその関連セルであるF列、G列の値を、C列D列に抜き出すという作業です。 改変した数式は以下の様なもので、C83に入力後、オートフィルで使おうと思っていました。 詳しい方、教えていただけませんか? =IFERROR(INDEX(F83:F162,SMALL(IF(E83:E162=B83,ROW(E83:E162)),ROW(A1))),"") (配列数式) 3キー打鍵 よろしくお願い致します。

専門家に質問してみよう