-PR-
解決済み

RAND関数について

  • すぐに回答を!
  • 質問No.74493
  • 閲覧数58
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 36% (52/142)

エクセルでRAND関数を使ってるんですけど、シート1、セル5個にRAND関数を入れればセル5個とも数字が変わりますよね。それはそれでもいいけど、
シート2の方にもRAND関数をセル5個にいいれればこっちも変わってしまうんです。シート1をしてるときは、シート2は、変わらないんでほしいんです。
なにか方法はありますか?
ついでに、同じシートでセル1つ1つが単独で変われないですか?
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル8

ベストアンサー率 35% (21/59)

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

お礼率 36% (52/142)

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

その他の回答 (全2件)

  • 回答No.1
レベル8

ベストアンサー率 35% (21/59)

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

お礼率 36% (52/142)

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

  • 回答No.3
レベル13

ベストアンサー率 68% (791/1163)

セルに算式を書き込むと、お望みの制御は難しいようですね。別法を考えてみました。

乱数を発生させたい箇所を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

お礼率 36% (52/142)

なんかマクロとか出てきたら頭から煙が出てきました。
だけどいい機会なので理解できるようにガンバッテチャレンジしてみます。
ありがとうございます。
投稿日時 - 2001-05-11 14:02:55
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ