プロが教えるわが家の防犯対策術!

Excelで次のような表を作りました。(例として書きます)

1. みかん
2. バナナ
3. もも
4. なし
5. 栗   ・・・(以下同様) と続いていきます。

今回、その表から、ランダムにデータを抽出し、別のセルに書き出したいのですがどうやっていいのかわかりません。(理想図を下に書きます。)


2. バナナ
5. 栗
1. みかん  ・・・・・(以下同様)

このようにして、今ある表から、ランダムに並び替えた、 『新たな表』 を作りたいのです。

どのように関数(RAND関数?)を設定したらいいのかよくわかりません。 教えてください。お願いします。

ちなみにOffice2000です。

このQ&Aに関連する最新のQ&A

A 回答 (13件中1~10件)

こんにちは。

maruru01です。

作業列を1列だけ使用した、絶対に重複しない数式での方法です。
元データがA1:B5で、C列を作業列に使用して、D:E列に表示するとします。
まず、C1に、

=INT(RAND()*5+1)

と入力します。次に、C2に、

=LARGE(INDEX(NOT(COUNTIF($C$1:C1,ROW($A$1:$A$5)))*ROW($A$1:$A$5),),INT(RAND()*(5-ROW(C1))+1))

と入力して、C5までコピーします。
そうしたら、D1に、

=INDEX(A:A,$C1)

と入力して、E1にコピー。
さらに、D1:E1を5行目までコピー。

やはり、[F9]を押すたびごとに並べ替えられます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました!!
数式の意味は実はほとんど、というか全く理解できません(笑) けれど、自分の表に合うように、セルアドレスを修正したり、RAND関数の範囲をうまく調整したらできました!!(数式の意味がわかるようになれば話が早いんですけどね・・・w)

僕の解釈だと、要はランダムに並び替えるには、表を一列追加して、その数字をランダムに割り振り、その順に並べればいいのですね! 一つセオリー?みたいなのを習得することができたような気がします。

F9で更新すれば、何パターンも作ることができるのでとても使いやすくすることができました!

回答ありがとうございました。 とても役に立ちました。

お礼日時:2004/11/13 17:16

もううんざりだという向きもあるかもしれませんが、


補足をしておきます。

>マクロと比べたら効率が悪いですし、私の方法はあまり良くなかった

実は、(言いたくはないですが)あのマクロは関数による方法に比べると相当効率が悪いです。

勘違いして欲しくないのですが、
私は、誰かを批判したかったのではなく
「ほとんどそういう症状がでない」と
「そういう症状がでない」は違うと言ってただけです。
    • good
    • 0

#11様



> 100兆+1回目の乱数が「それ以前に出たものでない」
> なんてことが逆にあり得ると思いますか?

思いません。
200件を10万回の例は「なかなか重複しないデータが作れないぞ~」
ってほど、連続で重複が続く事は稀ではないか思ってあげました。
重複チェック用関数と併用すれば F9を1~数回押せば重複なしデータが
作成可能でしょう。(データ量によって重複確率は増しますが)

マクロと比べたら効率が悪いですし、私の方法はあまり良くなかった
ですが、関数だけで実現したいってニーズもあるでしょうし、最初に
書き込んだ時に出ていた回答は「マクロじゃないと」ってのが主でした
ので関数でもやり方を工夫すればって事を表したかっただけです。
    • good
    • 0

papayuka 様


もしなにか気分を害されたのならすみません。

結局の処
100万回に一回の確率で弾がでる銃があるとして
その銃でロシアンルーレットをやったとすると
1回目に出る時もあるし、
100万回目に出る時もあるだろうと思います。
(まったくでないかもしれません)
例えば、一回目に出たとして
その事実の後に
同じ銃を使うとして、次に弾がでる確率は、
100万×100万分の1かと言うと
それは間違いで、
やはり、100万分の1です。
それで、その100万回に一回の確率で弾がでる銃を
渡されたとして、
この銃で頭を撃ったとしても、
死ぬ確率は交通事故で死ぬより低い。
ほとんど無いんだよと言われたとして
その銃を使ってみる気になりますか?
そういう意味では、
200件のデータで10回試行したということは
なんの意味もありません。

やはり、5行のデータで数回でもでるときはでるのです。

実際、桁を1つ減らして
100兆回の乱数を作成した時、
100兆+1回目の乱数が「それ以前に出たものでない」
なんてことが逆にあり得ると思いますか?
後になればなるほど、それ以前に出た数と一致するような気がするのですが。
    • good
    • 0

#7様



> 数回実験してみた処たった5行のデータなのに重複が生じた

そうですか、それは驚きです。
素人なのでこんな方法で良いか解りませんが、自分なりに下記のように検証した
限りではMsgが出る事はありませんでした。

先の方法で200件のデータを作成
C1:C200に =COUNTIF($B$1:$B$200,B1)
D1 に =SUM(C1:C200)
E1 に 200
下記を10回試した。

Sub Test()
 Randomize
 For i = 1 To 10000
  Application.Calculate
  If Range("D1").Value <> Range("E1") Then
    MsgBox "重複"
    Exit Sub
  End If
 Next i
End Sub

#6さんのマクロ以外にも、#8さん、#9さんと回答が出揃ってますのでこの辺にしておきます。
回答ありがとうございました。
    • good
    • 0

識者に批判を乞う。


>新たな表』を作りたいのです
表を別のシートか列にコピーします。
・コピーした列の隣列の第1行にでも=RAND()と入れて
最終行まで複写する。小数点以下9桁の乱数が表れる。
乱数列をコピーし、自分の列に「値」を複写し、各セルの式を消す。
データと乱数行を範囲指定し、乱数の入った列で「並び替え」する。
    • good
    • 0
この回答へのお礼

最初回答を見た時は「なんのこっちゃ?」と思いましたけど、今見るとなるほど!と思いました(笑)

要するに、表の先頭の数さえランダムにしてしまえば、あとはExcelの標準機能の、「並び替え」を使えばできてしまいますね。F9での更新機能は使えませんけど(使えないことも無いですが)、一番手軽で、しかも分かりやすいと思います。

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

お礼日時:2004/11/13 17:11

#6様


>おっしゃる通り、確かに絶対無いとは言えないでしょうけど、、、
>15桁だと 999兆9999億9999万9999 になるのかな?
>重複する確率って、、、
乱数のプログラム関係の本やサイトでも読まれたらわかると思いますが、それほどの(1000兆もの間)循環しないなんてことは、たかがエクセルの乱数では、ないと(いうかありえないとさえ)思います。
実際の処、 #4の回答を見て作らないでおこうかと思ったんですけど、
数回実験してみた処
たった5行のデータなのに重複が生じたのを実際に見たので作ることにしたのです。
もちろん、実用には充分だとは思いますが、
表が充分長くなってきた時には、結構重複がでてくる可能性があると思っています。
また、そのような長い表の時にそれと気づくのが実際の場面で難しいとも思います。
また、もともとの表に重複があった場合
#2で「A列のデータは単に行番号ではなく
入力された値である」
ということからも
#4の方法では、VLOOKUPでうまくいかない(一意でないキーの時にランダムに表を抽出するような)場合もあるかもしれません。
    • good
    • 0

> だいたいいける(ランクが同列になる場合がある)



おっしゃる通り、確かに絶対無いとは言えないでしょうけど、、、

15桁だと 999兆9999億9999万9999 になるのかな?
重複する確率って、、、
    • good
    • 0

#4の方ので、だいたいいける(ランクが同列になる場合がある)と思いますが、


一応マクロでのバージョンを作ってみました。

まず、マクロエディタでクラスの挿入というのをやります。
そこに必要な分だけ(表の列の数だけ)変数を確保します。
'- Class1 -------
Public value1
Public value2
'- Class1 end ---
ThisWorkBookにでも以下のコードをコピーペーストします。

Public Sub shuffle()
Dim base As Range
Dim toBase As Range
Dim data As New Collection
Dim ins As Class1
Dim pos As Integer
Dim i As Integer

Set base = Range("A1") ' 元表のトップ
Set toBase = Range("G1") 'コピー先のトップ

pos = 0
Do While base.Offset(pos, 0).Value <> ""
Set ins = New Class1
ins.value1 = base.Offset(pos, 0).Value '列の数だけやります。
ins.value2 = base.Offset(pos, 1).Value
data.Add ins, CStr(base.Offset(pos, 0).Value)
pos = pos + 1
Loop

Randomize
pos = 0
Do While data.Count <> 0
i = Int(Rnd * data.Count + 1)
toBase.Offset(pos, 0).Value = data.Item(i).value1 '列の数だけやります
toBase.Offset(pos, 1).Value = data.Item(i).value2
data.Remove (i)
pos = pos + 1
Loop
End Sub
    • good
    • 0

A1に =RAND()


B1に =RANK(A1,$A$1:$A$5)
C1に =VLOOKUP(B1,元リスト範囲,2,0)
として、A1:C1をA5:C5までコピー

F9キーで変わります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル指定した範囲からランダムで一つ抽出

エクセルの関数についての質問なのですが、

B1~B5に値がならんでいたとして、B1~B5の中からランダムに一つ抽出したものをA3に表示する関数はありますか?

Aベストアンサー

A3に次の式を入力すればよいでしょう。

=INDEX(B1:B5,RANDBETWEEN(1,5))

Qエクセル関数を使って、ランダム抽出をしたいです

エクセル関数を使って、ランダム抽出をしたいのですが
どの関数を使用すればいいのかわからないのです。

現在、1つのシートにいろいろなデータが入っているのですが、
D列のデータを使い、そのデータをランダムに25件抽出したいのです。

よろしくお願い致します。

Aベストアンサー

Sheet1にデータが入っているとして、そのD列のデータをSheet2のA列に取り出して操作をすることにします。
関数で取り出すのでしたらSheet2のA1セルに次の式を入力し下方にオートフィルドラッグします。
=Sheet1!D1
B1セルには次の式を入力し下方にオートフィルドラッグします。
=IF(A1="","",RAND())
C1セルには次の式を入力し下方にオートフィルドラッグします。
=IF(A1="","",RANK(B1,B:B))
D1セルには次の式を入力し下方にオートフィルドラッグします。
=IF(OR(COUNTIF(C:C,ROW(A1))=0,ROW(A1)>25),"",INDIRECT("A"&MATCH(ROW(A1),C:C,0)))
これでSheet2のD列にはランダムに抽出されたデータが並ぶことになります。
なお、F9のキーを押すことで抽出操作を繰り返すことができます。

QExcelで事前にセルに入力した言葉をランダムに表示

例えばA1に「いぬ」 A2に「ねこ」 A3に「ぞう」 A4に「たぬき」 A5に「きつね」と入力します
次に
B1~B10に 「いぬ」「ねこ」「ぞう」「たぬき」「きつね」のいずれかを自動にランダムに表示する方法を教えてください
こんな便利な機能があれば良いと思うのですが・・・

Aベストアンサー

=INDIRECT("A"&INT(RAND()/0.2)+1)

INT(RAND()/0.2)+1 で1~5までの整数が得られます。
INT(RAND()/0.1)+1 で1~10までの整数が得られます。
INT(RAND()/0.02)+1 で1~50までの整数が得られます。
INT(RAND()/0.01)+1 で1~100までの整数が得られます。

それでA1からA5、A1からA10、A1~A50、A1~A100のセルの内容を取得しています。A2からなら+2にしてください。
F9キーを押すたびに再計算されて、表示も変わります。

Q▲特定のセルからランダムに抽出しテストを作成▲

いつもお世話になっております。
エクセルのVBAについて教えて頂きたく書き込みいたします。
日本語が意味不明であれば、より詳しく記載しますのでご教授願います。

1つのエクセルの中に4つのシートがあります。
【Top(sheet1)、問題(sheet2)、初級(sheet3)、中級(sheet4)、上級(sheet5)】

Topにはスタートボタンがあり、クリックすることにより問題シートへと移動し、別シートより問題を抽出したいです。

問題シート内のC3~C17に問題が、D3~D17に(問題に付随した)ヒントが
ランダムに抽出されるようにマクロを作成したいです。

また問題、ヒント、答えは初級、中級、上級、それぞれのシートに(20問ずつぐらい)記載をしています。
初級から10問、中級から3問、上級から2問と抽出をしたいです。
答えに回答を入力することにより正解であればセルが青く、間違えであればセルが赤くなるようにしたいです。

簡易ではありますが、エクセルの画像も添付させてもらいます。
恐れ入りますがご教授願います。

Aベストアンサー

こんばんは!
面白そうなのでトライしてみました。

Sheet6を作業用のSheetとして追加・使用するようにしていますので、
Book上にはお示しの5つのSheetが存在しているという前提です。
尚、各Sheetともお示しの配置通りとします。

ます「TOP」Sheetにコマンドボタンを挿入 → コマンドボタンのコードを↓にしてみてください。

Private Sub CommandButton1_Click()
Worksheets("問題").Select
Worksheets("問題").Range("E3:E17").Interior.ColorIndex = xlNone
Call Sample1
End Sub

次にAlt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に
↓のコードをコピー&ペーストしてください。

Sub Sample1() 'この行から
Dim i As Long, lastRow As Long, c As Range
Dim wS2 As Worksheet, wS3 As Worksheet, wS4 As Worksheet, wS5 As Worksheet, wS6 As Worksheet
Set wS2 = Worksheets("問題")
Set wS3 = Worksheets("初級")
Set wS4 = Worksheets("中級")
Set wS5 = Worksheets("上級")
Application.ScreenUpdating = False
If Worksheets.Count <> 6 Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
End If
Set wS6 = Worksheets(Worksheets.Count)
wS6.Visible = xlSheetHidden
wS6.Range("A:C").Clear
wS2.Range("C3:E17").ClearContents
With wS3
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
.Range("E:F").Insert
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 10
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
With wS4
.Range("E:F").Insert
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 3
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
With wS5
.Range("E:F").Insert
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
Range(.Cells(2, "E"), .Cells(lastRow, "E")).Formula = "=RAND()"
Range(.Cells(2, "F"), .Cells(lastRow, "F")).Formula = "=RANK(E2,E:E)"
For i = 1 To 2
Set c = .Range("F:F").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, -4).Resize(, 3).Copy
wS6.Activate
ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next i
.Range("E:F").Delete
End With
wS6.Range("A2:B16").Copy
wS2.Activate
ActiveSheet.Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues
wS2.Columns.AutoFit
wS2.Range("E3").Select
Application.ScreenUpdating = True
End Sub 'この行まで

最後に「問題」SheetのSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペースト → Excel画面に戻り「TOP」Sheetのコマンドボタンをクリックし
「問題」SheetのE列に答えを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim c As Range
If Intersect(Target, Range("E3:E17")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Worksheets(6)
If Target <> "" Then
Set c = .Range("A:A").Find(what:=Target.Offset(, -2), LookIn:=xlValues, lookat:=xlWhole)
If Target = c.Offset(, 2) Then
Target.Interior.ColorIndex = 8 '←水色
Else
Target.Interior.ColorIndex = 3
End If
Else
Target.Interior.ColorIndex = xlNone
End If
End With
End Sub 'この行まで

※ 通常の青だと字が見えにくいので「水色」にしています。m(_ _)m

こんばんは!
面白そうなのでトライしてみました。

Sheet6を作業用のSheetとして追加・使用するようにしていますので、
Book上にはお示しの5つのSheetが存在しているという前提です。
尚、各Sheetともお示しの配置通りとします。

ます「TOP」Sheetにコマンドボタンを挿入 → コマンドボタンのコードを↓にしてみてください。

Private Sub CommandButton1_Click()
Worksheets("問題").Select
Worksheets("問題").Range("E3:E17").Interior.ColorIndex = xlNone
Call Sample1
End Sub

次にAlt+F11キ...続きを読む

QExcel VBA セルを指定個数ランダム選択

Excel VBA セルを指定個数ランダム選択
A1からA30までのセルをランダムで8コ選んで値として"○"を入れる
ということをやりたいのですがどのようにすればよいでしょうか?

よろしくお願いします。

Aベストアンサー

Sub try()
Dim i As Integer
Dim m As Integer

i = 1

Range("A1:A30").ClearContents

While i < 9
m = Int(Rnd() * 30) + 1

If Cells(m, 1).Value = "" Then
Cells(m, 1).Value = "○"
i = i + 1
End If

Wend

End Sub

一例まで。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Qエクセルで複数のセルにあらかじめ用意した単語を重複せずにランダム表示させる方法

当方エクセルの操作について困っております。
会社内で利用したいと思っているのですがうまくいかず途方にくれております。

例としてあらかじめセルA1~A30に人名「鈴木」「田中」「佐藤」等の30個の単語を用意し、
それらをC1~C30に人名が重複しないように表示させる方法をご存知の方がいらっしゃいましたらご教授願いたくよろしくお願いいたします。
当方エクセル操作は社内で簡単な見積書などの書類を作る程度で初心者です。

Aベストアンサー

くじのようにランダムに並べ替えて表示・印刷したいということでしょうか。
用意した単語は重複していないものとして、こんな方法が考えられます(手元の Excel2003 で確認)。

途中計算用にセルを30個用意し(例えば Z1~Z30 など印刷範囲の外に)、
それぞれに "=RAND()" という式を入力する。
次に、C1に "=INDEX($A$1:$A$30,RANK($Z1,$Z$1:$Z$30))" という式を入力し、
このセルをコピーして C2~C30 に貼り付ける。

・RAND() は、 0.0 以上 1.0 未満の乱数を発生させる関数です。
 Z1~Z30 には、異なる30個の数値が入ることになります(重複する可能性は非常に低いはず)
・RANK(数値,セル範囲) は、その[数値]が、[セル範囲]中の各セルの内容の中で何番目に大きいか、を返します。
 C1~C30のそれぞれの中で計算される RANK は、(Z1~Z30 に重複がないとして、)1~30までの重複しない数値になります。
・INDEX(セル範囲、数値) は、[セル範囲]中の[数値]番目のセルの内容を返します。

くじのようにランダムに並べ替えて表示・印刷したいということでしょうか。
用意した単語は重複していないものとして、こんな方法が考えられます(手元の Excel2003 で確認)。

途中計算用にセルを30個用意し(例えば Z1~Z30 など印刷範囲の外に)、
それぞれに "=RAND()" という式を入力する。
次に、C1に "=INDEX($A$1:$A$30,RANK($Z1,$Z$1:$Z$30))" という式を入力し、
このセルをコピーして C2~C30 に貼り付ける。

・RAND() は、 0.0 以上 1.0 未満の乱数を発生させる関数です。
 Z1~Z30 には...続きを読む

Qエクセルで複数のセルをランダムに並べ替えるには?

方法があるのかないのか分かりません
 
エクセルで、数字ではない文字の入った複数のセルをランダムに並び替える方法を知りませんか?
「昇順」、「降順」キーを使えばその通りに並べ替えできるのですが、同様に「ランダム」キーがあって、それを押すとランダムに並べ替えが出来るみたいに簡単に出来る方法はないでしょうか、乱数を発生させる関数を使えば出来るようですが、ちょっと分かりずらく難しいです、
誰か、教えてください

Aベストアンサー

関数だけでは難しいと思います。
いわゆるシャッフルですよね。
例えば次のように行います。
A1~A9まで、田中、鈴木、木村・・・、と名前を入れます。
B1~B9まで、=RAND() と入れます。
すると、B1~B9には、0.987、0.643、0.2122・・・と、乱数が表示されます。
そこで、B1をキーにして、並べ替えを行います。
とすれば、実質A列をシャッフルできます。

参考URL:http://homepage2.nifty.com/mako-chan/excel/excel9.htm


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング