• ベストアンサー

RAND関数について

エクセルでRAND関数を使ってるんですけど、シート1、セル5個にRAND関数を入れればセル5個とも数字が変わりますよね。それはそれでもいいけど、 シート2の方にもRAND関数をセル5個にいいれればこっちも変わってしまうんです。シート1をしてるときは、シート2は、変わらないんでほしいんです。 なにか方法はありますか? ついでに、同じシートでセル1つ1つが単独で変われないですか?

  • kazu7
  • お礼率36% (52/142)

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

  • ベストアンサー
  • 11213
  • ベストアンサー率35% (21/59)
回答No.2

先ほどのツール/オプション/計算方法を手動にする の条件で「SHIFT」+「F9」で該当シートのみの計算となりますが、ファイルセーブして再度ファイルを空けるときに 自動計算されてしまいます。 =RAND()を数式バーにあるうちに「F9」を押すとその時点の 乱数がセルに数値として張り付きますが、それ以降は数値ですから乱数には戻りません。 貴方の使用方法が分かりませんので、試してみた結果を記載しますが、どうも仕様に合わないような気がします。 すいません!

kazu7
質問者

お礼

やったー!でけた!! “「SHIFT」+「F9」で該当シートのみの計算となりますが” これが重要でした! さすがに1つのセルだけとまではいかないけど、シート1と2を単独でできました。先ほどの説明でわからなくて、お手数かけました! ありがとうございました。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

セルに算式を書き込むと、お望みの制御は難しいようですね。別法を考えてみました。 乱数を発生させたい箇所をSheet1、Sheet2ともA1からA5としています。(変更可能です) 乱数を発生させた後はA1は再計算で乱数を発生させ、A2からA5は変更されないようにしています。 また、Sheet1のA1が変更されてもSheet2のA1からA5は変更されません。逆も同じです。 この方法は何枚のシートがあっても他のシートの変更に干渉されないはずです。 ***設定方法*** まず、Sheet1、Sheet2のA1からA5には何も入力しません。 VBE画面でSheet1のモジュールとしてSheet1用のマクロ(Worksheet_Change)を貼り付けます。 '*** Sheet1用 *** Private Sub Worksheet_Change(ByVal Target As Excel.Range) If ActiveSheet.Name = "Sheet1" Then If Target.Address = "$A$1" Then If Range("A2") = 0 Then Range("A2") = Rnd() If Range("A3") = 0 Then Range("A3") = Rnd() If Range("A4") = 0 Then Range("A4") = Rnd() If Range("A5") = 0 Then Range("A5") = Rnd() End If Application.EnableEvents = False Range("A1") = Rnd() Application.EnableEvents = True End If End Sub 同様にVBE画面でSheet2のモジュールとしてSheet2用のマクロを貼り付けます。 乱数発生セルを変更される場合は、マクロの番地を修正して下さい。 '*** Sheet2用 *** Private Sub Worksheet_Change(ByVal Target As Excel.Range) If ActiveSheet.Name = "Sheet2" Then If Target.Address = "$A$1" Then If Range("A2") = 0 Then Range("A2") = Rnd() If Range("A3") = 0 Then Range("A3") = Rnd() If Range("A4") = 0 Then Range("A4") = Rnd() If Range("A5") = 0 Then Range("A5") = Rnd() End If Application.EnableEvents = False Range("A1") = Rnd() Application.EnableEvents = True End If End Sub ***乱数の発生*** シートに戻り、A1セルに何かを入力します。(スペースとか。そしてEnter)A1からA5に乱数がセットされます。 これ以降はシートに何か変更が起きるとA1だけが新たな乱数になります。A1でEnterしても変わります。 A2からA5を新たな乱数にしたい場合はこの範囲を消去してA1を選択してEnterです。 セルに算式をセットしてないので保存して再度開いても変更されないはずです。 実際にはA2からA5セルは連続な範囲ではないかもしれませんが、これらの範囲に範囲名を付けておけば簡単に消去できると思います。 お望みのものか試して見て下さい。(実用的か判断できないもので)

kazu7
質問者

お礼

なんかマクロとか出てきたら頭から煙が出てきました。 だけどいい機会なので理解できるようにガンバッテチャレンジしてみます。 ありがとうございます。

  • 11213
  • ベストアンサー率35% (21/59)
回答No.1

ツール/オプション/計算方法で 手動でシート再計算の釦クリックで表示している シートの範囲のみRAND関数値は変わりませんでしたよ。 他に規制があるかもしれませんが、試してみて下さい。

kazu7
質問者

補足

早速のアドバイスありがとうございます。 実際やってみましたが、ダメでした。 シート1は出来上がってそのままの表示された数字でいてほしいんですけど シート2でF9ボタンを押すと、シート1まで変わってしまいます。 どうしたもんでしょうかね?

関連するQ&A

  • ExcelでのRand関数のカウントのしかた

    Excelに触り始めてまだ二日の初心者です。 Excelで、Rand関数で出した数字が変わるたびに、 別の別のセルの数字を1ずつ増やすことはできないのでしょうか。 アドバイスお願いします。

  • Rand関数を使って

    A1のセルに=int(rand()*100+1)という関数を使って1から100までのランダムな数字を入れるようにしました。A2からA101までに連続した 1~100までの数字が入力してあります。 B列には、氏名が入力してあります。 で、A1に出たランダムな数値の行に色をつけたいのですが、マクロの書き方がわかりません。 どなたか教えていただけないでしょうか。 よろしくお願いいたします。

  • RAND関数

    RAND関数で 質問あります。 RAND関数で 乱数発生の後、その 乱数が再計算される度、乱数が 変更されないように したいので、エクセルのHelp参照したら 「数式バーに =RAND()という数式を入力して”F9”キーを押し 数式を 計算結果の乱数に置き換えます」 と 書いてありましたが、何度やっても 固定されず 乱数のままです。 どうしたら 固定できるのでしょうか? お願いいたします。 エクセルは 2002です。 エクセル ヘルプの 検索は「RAND」で検索しました。

  • Rand関数について

    Rand関数について コンピューターの素人です。以下のカッコの中の理解で間違いないかどうか、教えてください。 「Rand関数は乱数を発生させる関数である。Rand関数は最小値と最大値を指定して、その範囲で整数の乱数を発生させることができる。」

  • RAND関数について

    http://okwave.jp/qa/q6489522.html の質問をしながらさらに疑問に思ったことがあります。 ランダムな数字を発生させようとしてRAND関数を使用しました。 今回は1以上で小数点以下の無い数字を発生させようとしました。 また、今回は9999以下にすることにします。 この場合「=RAND()*10000」とし、 桁区切りで小数点以下を消したら表示はランダムな四桁(以下)の数字が現れました。 ここで(例えば)「1234」の数字が現れたら書式設定する事にし、 条件付き書式から「1234と等しくなれば書式設定」をしたのですが、 1234が現れても書式が変わりません。 見た目は1234でも内部で違う数値だからなのでしょうか? このように乱数を発生させて任意の数字が出てきたら書式設定はどうすればいいのでしょうか?

  • ExcelのRAND関数

    ExcelのRAND関数で、0から1の間の乱数を発生させることができます。 たとえば、10万行のデータの各行に一度にRAND関数で乱数を発生させた場合(1件目に=RAND()を入力してから下方向コピーする。)、同じ値が発生することはありうるのでしょうか。 データ量が多くなるほど小数点以下の桁数が増えていくので、そのようなことは起きないようになっているのではないかと思いますが、実際はどうなのでしょうか? 

  • rand関数

    rand関数のつかいかたを教えてください

  • array_rand関数

    現在、ランダム関数を使用して、配列にある値の中から ランダムにいくつかの配列を抜き出す処理を行っています。 $rand_keys = array_rand($id,2); for($k=0;$k<count($rand_keys);$k++){  $rand_id[$i][$k]=$id[$rand_keys[$k]]; } ただし、この関数では一つだけ取り出したい場合には使えません。 何かよい方法はありませんか??

    • ベストアンサー
    • PHP
  • EXCELで乱数 -RAND関数について

    Excelの乱数 Rand()について教えて下さい。 入力セルの数値変更をする度に各Rnad()のセルの 値が更新されますがこれを固定する方法を教えて下さい。 また「更新」と「更新の禁止」を切り替えるにはどうすればいいか 御願いします。

  • エクセルの関数に関して

    エクセルの関数で質問があります。Sheet1とSheet2とがあり、Sheet1のセルに数字を入力しEnterキーを押した際に、Sheet2に作成した表に入力されている数字のセルにジャンプする関数を御存じの方

専門家に質問してみよう