• ベストアンサー

エクセルでランダムな座席表を作成したい

excel 2003を使用しています。 エクセルで、100名程度の座席表を作成したいと思っています。 今、机の絵をレイアウトどおりに表示させて、該当する机に社員番号を入れれば、社員名が表示されるように設定しています。 席替えを毎日行うので、1-100の数字をランダムかつ重複せずに入れて、簡単に座席変更をしたいのですが、方法がわかりません。RANDBETWEENだと、ランダムに数字が入りますが、重複してしまい、困っております。 ランダムに数字を入力でき、かつ重複しない方法を教えてください。 どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.5

#02、04です。 う~ん困りました。補足していただいた内容だけでは到底期待に添うマクロは書けないからです。例えば「机の絵をレイアウトどおりに表示させて」って、具体的にはどのセルが氏名の表示セルなのかも分かりません。回答者は質問者さまのパソコンは見えないのです。 それにVLOOKUP関数を使用する方法は試していただけましたか? これでも毎回異なる座席表は作成できるはずです。どんな問題がありました?(試さずに「マクロでお願いします」はないですよね) とりあえずマクロは書いてみました。でもこちらで不足する情報を想像で補っていますから、きっと期待通りのものにはなりません。後はご自身で修正するなりしてください。 前提 ・シート1に座席表がある。氏名が入るセルはB,D,F,H,J列の2行目から2行おきとする ・シート2のA列に1~100の連番。B列に100人分の氏名が入力されている。C列は作業列として使うので何も入力しない ・実際の人数が100人に満たない場合、空席もランダムに発生する(人を前方に詰めることはしない。マクロを変更すれば詰めることも可能ですが…) 以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。 Sub Macro1() Dim idx, R, C As Integer   Randomize   For idx = 1 To 100     Sheets("Sheet2").Cells(idx, 3) = Rnd   Next idx   With Sheets("sheet2")     .Activate     .Cells(1, 1).CurrentRegion.Select     Selection.Sort key1:=Range("C1"), Order1:=xlAscending, _       header:=xlGuess, DataOption1:=xlSortNormal     For idx = 1 To 100       R = Int((idx - 1) / 5 + 1) * 2 'この式は実際の配置に合わせる       C = ((idx - 1) Mod 5 + 1) * 2 '必要があります       If .Cells(idx, "B") = "" Then         Sheets("Sheet1").Cells(R, C).ClearContents       Else         Sheets("Sheet1").Cells(R, C).Value = .Cells(idx, "B")       End If     Next idx     .Cells(1, 1).CurrentRegion.Select     Selection.Sort key1:=Range("A1"), Order1:=xlAscending, _       header:=xlGuess, DataOption1:=xlSortNormal     .Columns(3).ClearContents   End With   Sheets("Sheet1").Activate End Sub このマクロを実行するボタンを作成するなら、「ツールバー右クリック」→「フォーム」から「コマンドボタン」を選択し、画面上にコマンドボタンを配置して、マクロを登録すればよいでしょう

IWA_OKOSHI
質問者

お礼

お礼が送れて失礼いたしました。 実例のマクロを作成いただきありがとうございました。前提どおりのシートを作成して、マクロを少しずつ変更しています。希望通りのマクロにもう少しでなりそうです。後は自力でやってみます。ありがとうございました。

IWA_OKOSHI
質問者

補足

ご対応ありがとうございます。記載していただいている前提条件のように述べる必要があったのですね・・・。 う、失礼いたしました。 VLOOKUPも試してみたのですが、エクセルをほとんど知らないメンバーでも操作できるようになるべく簡略化したかったのです。 今日、マクロを入れて試してみます。取り急ぎお礼まで。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#02です >ワンボタンで、実行できればと考えていました ワンボタンで何を自動化するか、質問に具体的に書かれていないのに何をどう回答すればよいのでしょうか(^^; #01さんもヒントを書いてくれていますが、#02の方法で乱数を発生させたとして、例えば1~100の乱数を発生させたシートをSheet2として、さらにSheet3のA1:C100に1~100の連番と社員番号と氏名の表があるとすれば、座席に相当する100個のセルに順番に  =VLOOKUP(Sheet2!A1,Sheet3!$A1:$C100,3,0)  =VLOOKUP(Sheet2!A2,Sheet3!$A1:$C100,3,0)   ~中略~  =VLOOKUP(Sheet2!A100,Sheet3!$A1:$C100,3,0) と指定しておけば、自動的に100人分の氏名を座席表に表示することができますよ Sheet2でF9を押下して再計算するたびに、座席表も変わるはずです これでもワンクリックではないというならマクロが必要でしょう。 マクロがよければ補足してください。でもきちんと条件を書いていただけないとマクロは書けませんよ。

IWA_OKOSHI
質問者

補足

ご回答ありがとうございます。 ご回答に甘えてマクロをお願いさせて頂きます。(スイマセン) 机の絵をレイアウトどおりに表示させて、それぞれの机に=VLOOKUP(Sheet2!A1,Sheet3!$A1:$C100,3,0)の関数を入れている席表のシートをSheet4とした際に、sheet4上に、「席替え」ボタンを作成して、そのボタンを押せば、Sheet2を再計算、最ソート出来きて、Sheet4の席がランダムに変われば良いと思っています。 どうぞよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

ランダムに1-100の数が入っている列をその値でソートし、ソート結果の行番号ROW()を使えばどうでしょう。 直接セルの値をつかうのでなく。 乱数では重複していても、並び替えると、同じ値の中でも、何かの上下の序列が付きますから。そうするとROW()の値は、それぞれ別になります。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

どのくらい作業を自動化したいのか分かりませんが、単純に「1~100までの重複しないランダム数列を得たい」で良ければ以下で可能です まず適当なシートのA1:A100に1~100の連番を予め入力します。オートフィルを使うと簡単でしょう。そしてB1に  =RAND() を入力し、B100までコピーします。 A1:B100をB列をキーにして昇順、もしくは降順で並べると、A列はランダムな重複なしの数列になります。 意味が違っていたらごめんなさい。

IWA_OKOSHI
質問者

お礼

ご回答ありがとうございます。 ワンボタンで、実行できればと考えていました。並べ替えてセルをコピー・・・もう少し考えてみます。

全文を見る
すると、全ての回答が全文表示されます。
  • root16
  • ベストアンサー率31% (43/138)
回答No.1

参考情報 http://www.relief.jp/itnote/archives/001798.php 多分、もっと簡単な方法としては、 RAND関数を使って予め入力しておいた1~100の数字を ランダムに並べ替え、それを座席番号とリンクしている セルにコピーすれば早いんではないでしょうか。

IWA_OKOSHI
質問者

お礼

ご回答ありがとうございます。 ワンボタンで、実行できればと考えていました。並べ替えてセルをコピー・・・もう少し考えてみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ランダム関数で任意の桁数のランダム数字を作りたい

    エクセル2000ユーザーです。ランダム関数を使い、重複を許さない5桁のランダム数字を1000個作りたいと思っています。randbetween関数を使おうと思ったのですが、2000では使えないのか、NAMEといったエラー表示がでます。5桁の中は同じ数字がでてきても構いません。例:11295、43634、70676・・・etc。 が、1000個の中では同じ数字が重複しないようにしたいです。 =RIGHT(RAND(),5) のように考えたのですが、他にいい方法はありますでしょうか? マクロやVBAは苦手なので、できれば関数でいいやり方があれば教えてください。

  • Excel2002 ランダムに並べ替える関数

    Excel2002で掛算九九の100マス計算を作っています。 マクロを使って、ボタンにマクロを登録し、九九の問題を作成したいのです。 1~10の数字をランダムに重複しないように、A1:J1に表示したいです。 A B C D E 1 9 7 8 1 2・・・ 2 2 3 8 4 1 5 4 でA1:J1の1~10の数字ををランダムに並び替えたいのですが、そういった関数はありますか? RANDBETWEEN関数を使ってみたんですが、重複する数字が返ってきてしまいます。 何か良い方法はありますか?

  • 【EXCEL】1~1000000までのランダムな数値を入れたいのです。

    毎度お世話になっております。 社員200名いるとします。 その社員一人一人にランダムなパスワード、重複しない数字6桁を振りたいのです。 エクセルのヘルプを見てもTDISTやTINVなど見慣れない関数ばかりです。 (´・ω・`)ショボーン 何か良い方法はありますでしょうか?

  • エクセルで3ケタの乱数

    今度くじ引き大会をするのに3ケタの数字を250名ほどに配りたいのですが、それぞれの数字が重複なくかつ各桁数の数字が重複しないで乱数をエクセルで生成する方法を教えてください。(例えば、101,221,199などは除外したいです) RAND,RANDBETWEEN関数を使ってみましたが、重複してしまうし、221などのような各桁で数字が重複してしまうものができてしまうのでうまくいきません。 よろしくお願いします。

  • 職場の座席表を作成したい

    職場の座席表を作成したいのですが、レイアウトの変更や名前の入力が簡単にできて、 机や電話やパソコンなどの図を挿入できたりできるソフトな無いでしょうか? できればフリーソフトであれば嬉しいのですが。 以前にエクセルで図などを挿入して作成したのですが、そのときに使用した電話やパソコンなどの図が どこから引っ張ってきたか(確かエクセルのクリップアートだと思うのですが。。。) エクセルも新しいバージョンになりわからなくなってしまいました。 以前作成した座席表の元ファイルも今はもうありません。 もしいいフリーソフトが無くても、エクセルで挿入できる机や電話やパソコンの図 (以前はグレー色のいろんな図が固まって表示されて選べたのですが。。。) がどこにあるかご存知の方いらっしゃれば、その場所でも結構ですのでお教え下さい。 よろしくお願い致します。

  • EXCELの並べ替えとランダムについて

    ABCDEFGを一つのグループとして、ランダムに並べ替え それぞれのアルファベットに1234のいずれかの数字を 付加するという作業をしています。 例 CEGDBAF GDBEACF … 1433212 3224312 … 今は、ABCDEFGにRANDで数字をつけ、昇順で並び替え それに、RANDBETWEEN(1,4)で得た数字をつけていくという 作業をしているのですが、グループの数が多い場合 この方法だと限界があると思いました。 何かまとめてできる方法がありましたら 教えていただきたく思います。 よろしくお願いします。

  • エクセルで0から300までの数字をランダム表示

    エクセルで0から300までの数字をランダムに表示させる方法はありますか? 262 096 111 282 063 173 263 211 187 118 121 014 039 235 244 273 082 142 166 197 052 019 とこんな風に表示させていきたいんですが できますでしょうか?

  • エクセルで条件付きランダム化を行う方法

    はじめまして。 エクセル初級者です(2007ユーザー)。 なるべくマクロ関数を使わずに、条件付きのランダム化をする方法を探しています。 具体的には、1~5の数字をランダムに並べる際、1度も重複せずに並べたいと思っています。  例) 5, 3, 2, 4 ,1  / 2, 1, 4, 3, 5 などなど どうもラテン方陣というものを作るのが1番早いようですが、 今一つ作り方が分かりません。 上記どちらでもかまいませんので、もしご存知の方がいらっしゃいましたら教えてください。 よろしくお願いします。

  • ランダムに6つの数字を選びその際、数字が重複しない様にする方法が知りたいです。

    6個の枠があり、ボタンを押すとそれぞれの枠に ランダムに1~43の数字が表示できるようにしたいです。 その際それぞれの数字が重複しない様にしたいです。 ランダムに数字を選ぶようには、何となく解りますが、 重複しない様にする方法が解りません。 よろしくお願いします。

  • エクセルでランダム組み合わせする方法

    はじめまして、エクセルを使用してある集団からランダムに組み合わせを作りたいのですがよい方法あるいはヒントがあればアドバイスをいただきたいのでよろしお願いします。 具体的には、7列12行の席があり、その中からランダムに7席(名)を選んで1~3チームを作るというものです。各チーム内で重複しないようにし、7席(名)を選択する方法あればベストですが、それに近い方法でもよいです。(結果を見て、重複席を自分で変更するなど微調整できればよいと思っています。 ちなみに7列12行のそれぞれのセルには氏名か番号をつける予定です。 よろしくお願いします。

専門家に質問してみよう