- ベストアンサー
RAND関数について
エクセルでRAND関数を使ってるんですけど、シート1、セル5個にRAND関数を入れればセル5個とも数字が変わりますよね。それはそれでもいいけど、 シート2の方にもRAND関数をセル5個にいいれればこっちも変わってしまうんです。シート1をしてるときは、シート2は、変わらないんでほしいんです。 なにか方法はありますか? ついでに、同じシートでセル1つ1つが単独で変われないですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
先ほどのツール/オプション/計算方法を手動にする の条件で「SHIFT」+「F9」で該当シートのみの計算となりますが、ファイルセーブして再度ファイルを空けるときに 自動計算されてしまいます。 =RAND()を数式バーにあるうちに「F9」を押すとその時点の 乱数がセルに数値として張り付きますが、それ以降は数値ですから乱数には戻りません。 貴方の使用方法が分かりませんので、試してみた結果を記載しますが、どうも仕様に合わないような気がします。 すいません!
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
セルに算式を書き込むと、お望みの制御は難しいようですね。別法を考えてみました。 乱数を発生させたい箇所を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セルは連続な範囲ではないかもしれませんが、これらの範囲に範囲名を付けておけば簡単に消去できると思います。 お望みのものか試して見て下さい。(実用的か判断できないもので)
お礼
なんかマクロとか出てきたら頭から煙が出てきました。 だけどいい機会なので理解できるようにガンバッテチャレンジしてみます。 ありがとうございます。
- 11213
- ベストアンサー率35% (21/59)
ツール/オプション/計算方法で 手動でシート再計算の釦クリックで表示している シートの範囲のみRAND関数値は変わりませんでしたよ。 他に規制があるかもしれませんが、試してみて下さい。
補足
早速のアドバイスありがとうございます。 実際やってみましたが、ダメでした。 シート1は出来上がってそのままの表示された数字でいてほしいんですけど シート2でF9ボタンを押すと、シート1まで変わってしまいます。 どうしたもんでしょうかね?
お礼
やったー!でけた!! “「SHIFT」+「F9」で該当シートのみの計算となりますが” これが重要でした! さすがに1つのセルだけとまではいかないけど、シート1と2を単独でできました。先ほどの説明でわからなくて、お手数かけました! ありがとうございました。