エクセルに関しての質問です。


あらかじめ用意してある100個の単語を、
100個のセル(A1~J10)に、
ランダムに配置させたいのですが、
どのような関数・手順で行えばよいでしょうか?

要は、ボタンを押すなどのアクションを行うたびに、
100個の単語をランダムに配置させたいのです。


質問がわかりにくくて恐縮ですが、
よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/08/02 15:10:07
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:db_Magician No.4

回答回数2ベストアンサー獲得回数2

ポイント22pt

http://www.relief.jp/itnote/archives/001798.php

ちょっと面倒な方法ですが。

まず、別シートに下図のような100個の単語のリストを作ります。


(1行)rank(A列)  random(B列)   単語(C列)

(2行)3   0.781673996     単語1

(3行)55   0.561949554     単語2

(4行)27   0.117892303     単語3

(5行)8   0.031631073     単語4

(101行)91   0.168868717     単語100


B列には数式 =RAND()を入れ、ランダムな数を作ります。

A2に =RANK(B2,$B$2:$B$101)を入れ、下までずーっと伸ばしていくと

B列に入っているランダム数の、大きさの順位が出てきます。

重複のない乱数を作るためにこの操作をします。


あとはメインのシートに

=VLOOKUP(1,別シート!$A$2:$C$101,3,FALSE)

=VLOOKUP(2,別シート!$A$2:$C$101,3,FALSE)

=VLOOKUP(3,別シート!$A$2:$C$101,3,FALSE)

を入れていけばできると思います。

F9キーを押して再計算させれば、順番もランダムに変わると思います。

説明へたですみません。

その他の回答3件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント23pt

http://q.hatena.ne.jp/1153342543

こちらの質問を応用してできますでしょうか?

ちなみに 単語100個は どこに用意されてますでしょうか?

id:endzendzendz

とても近い気がします。

単語100は、テキストファイルか、

同一シート状の空いたセル上に配置しておく予定です。

2006/08/02 12:45:09
id:freemann No.2

回答回数335ベストアンサー獲得回数55

ポイント23pt

<<前提条件>>

1.もとになる単語100個を選択しておく

2.コピー先の範囲が(A1:J10)であり、データは空である事

*コマンドボタンに関数を割り当てるところは割愛します

考え方としては、乱数で生成された値を10行10列の値に変換し、そこから後ろに向かってコピー先でデータがまだ入ってないところを探して行き、あいていたらそこにデータをコピーする。

という方針で作りました。

Dim a As Range

Dim i As Integer

Dim j As Integer

Dim iRow As Integer

Dim iCol As Integer

Randomize (Now) '乱数のSeedを毎回変えるため

For Each a In Selection

  i = Int(Rnd() * 100)

   '0-100までの乱数を10行10列の値に変換するところ(コピー元が10行10列だから)

  iRow = Int(i / 10) + 1

  If iRow > 10 Then

  iRow = 1

  End If

  iCol = Int(i Mod 10) + 1

  For j = 0 To 99

  If iCol + j > 10 Then '列がJ列より外側をさしてたら先頭に戻す

  iCol = -j + 1

  iRow = iRow + 1

  If iRow > 10 Then '行が10列より外側を指していたら先頭にもどす

  iRow = 1

  End If

  End If

  If Worksheets(2).Cells(iRow, iCol + j).Value = "" Then

  Worksheets(2).Cells(iRow, iCol + j).Value = a.Value

  Exit For

  End If

  Next j

Next a

http://q.hatena.ne.jp/1154479102

id:Boone No.3

回答回数5ベストアンサー獲得回数0

ポイント22pt

■方式案

Excelの関数、randを使えば良いと思います。

randで作成したランダムな値を元に、100個の単語を並び替え(ソート)すれば、単語の並びをランダムにできます。

■手順例

①セルA1に下記の式

=RAND()

を代入して下さい。0以上1未満の値が表示されるはずです。

②セルA2~A100にもセルA1と同じ式を代入して下さい。

その際、セルA1を選択し、フィルハンドルにより一気に代入すると便利です。

http://excimer.hp.infoseek.co.jp/HP-Excel/e-FillN.htm

③セルB1~B100に、対象の単語を貼り付けてください。

④セルA1~B100を、行Aの値を基準に並べ替えてください。

すると、100個の単語がランダムに並び替えられます。

⑤最後に、A1~J10に単語を10ずつ切り取り配置します。

■課題

randは、

id:db_Magician No.4

回答回数2ベストアンサー獲得回数2ここでベストアンサー

ポイント22pt

http://www.relief.jp/itnote/archives/001798.php

ちょっと面倒な方法ですが。

まず、別シートに下図のような100個の単語のリストを作ります。


(1行)rank(A列)  random(B列)   単語(C列)

(2行)3   0.781673996     単語1

(3行)55   0.561949554     単語2

(4行)27   0.117892303     単語3

(5行)8   0.031631073     単語4

(101行)91   0.168868717     単語100


B列には数式 =RAND()を入れ、ランダムな数を作ります。

A2に =RANK(B2,$B$2:$B$101)を入れ、下までずーっと伸ばしていくと

B列に入っているランダム数の、大きさの順位が出てきます。

重複のない乱数を作るためにこの操作をします。


あとはメインのシートに

=VLOOKUP(1,別シート!$A$2:$C$101,3,FALSE)

=VLOOKUP(2,別シート!$A$2:$C$101,3,FALSE)

=VLOOKUP(3,別シート!$A$2:$C$101,3,FALSE)

を入れていけばできると思います。

F9キーを押して再計算させれば、順番もランダムに変わると思います。

説明へたですみません。

  • id:Boone
    あぁ、書きかけのまま投稿していました。。
    課題云々は余計です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません