- 締切済み
エクセルで特定のセルのみを任意のタイミングで更新
エクセルのRANDBETWEEN関数についての質問です。 再計算するたびに,新しい整数の乱数を返すと思いますが, 再計算のたびに,整数を返すのでなく自分のタイミング(マクロでフォームボタンを押したときなど)で実行されるようにしたいです RANDBETWEEN関数が設定されているセルだけを任意のタイミングで更新するのは,どのようにしたら良いでしょうか?
- kirakira_star_
- お礼率7% (37/505)
- Visual Basic
- 回答数4
- ありがとう数0
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- SI299792
- ベストアンサー率48% (714/1476)
・・・・・q10149843 ボタンを押した時だけ更新する関数ができないかと思い、作ってみました。 第3パラメータでIndex を指定する必要があります。(同じIndex だと同じ数字になります) 幾つ必要か解らないので、10個分です。 Option Explicit Dim Rand(9) As Double ' Sub Macro2() Dim Index As Integer ' For Index = 0 To 9 Rand(Index) = Rnd Next Index Calculate End Sub ' Function RandBetweenButton _ (Min As Integer, Max As Integer, Index As Integer) As Integer ' Application.Volatile RandBetweenButton = Rand(Index) * (Max - Min) + Min - 0.5 End Function
- imogasi
- ベストアンサー率27% (4737/17068)
>エクセル】あるセルのみ自動再計算させない方法 で照会すると、 ーー 別のブックに乱数を設定しておいてそのセルをリンクします。 乱数のあるブックを開かない限り乱数は変わりません。 これ以外だと手動で乱数を保存するか、マクロになると思います。 ーー とあります。 乱数データをファイルでもって固定するか、別シートや同一シートの他のセル範囲に、セルに値として固定するかしかないでしょう。値としてセル群に張り付けてしまい、変えたいときは、コピペをやり直しとかどうですか。 ーー ・「再計算されるたびに新しい乱数が発生する」、というこの関数の仕組みがこういう不便を生じるが、理由があってのことでしょう。 ーー VBAのRnd関数は、すこし様子が違うようです。 https://excel-ubara.com/excelvba8/EXCELVBA839.html 他多数。 少なくともエクセル関数の再計算(Shiftキーを押しながらF9キーを押す)の対象外のようです。
- SI299792
- ベストアンサー率48% (714/1476)
残念ながら、再計算をOFF にする以外方法はありません。 そういう時は、VBA で乱数を入れたいセルに乱数を入れます。 例えば、A1~A10 に 1~10の乱数を入れる場合です。 Option Explicit ' Sub Macro1() Const Min = 1 Const Max = 10 Dim Between As Integer Dim ROut As Long ' Between = Max - Min ' For ROut = 1 To 10 Cells(ROut, "A") = Int(Rnd() * Between + Min) Next ROut End Sub
- notnot
- ベストアンサー率47% (4848/10261)
質問ポイントがわかりませんが、VBAの処理で乱数が欲しいのなら、VBAのRnd関数を使います。 Rnd自体は0以上1未満の実数なので、 XからYまで(両端含む)の整数の乱数なら、 Int(Rnd()*(Y-X+1)+X) です。
関連するQ&A
- エクセルで、乱数の関数 同じ数が無いように
乱数を発生させる関数で、RAND関数は、小数点(0~1の間)で、RANDBETWEEN関数は整数で出るとのことですが、RANDBETWEEN関数は同じ数字がいくつか重複して出ます。整数で同じ数が出ないようにする関数はないでしょうか?
- ベストアンサー
- その他MS Office製品
- Excelで 「任意の2つのセルを選択後、ボタンを
Excelで 「任意の2つのセルを選択後、ボタンをクリックしたら、セルの値が入れ替わるマクロ」 を作りたいのですが、 「任意の2つのセル選択」 というところでいきなりお手上げです。 教えてください。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBA初心者です。任意のセルの自動計算をしたいのですが・・・
自動マクロを使い作成していましたが、煮詰まりました。お知恵をいただきたくお願い致します。 シートの各セルの中に整数が入っているとします。(仮にシート一面に全て) エクセルの任意のセル(その都度列、行とも違う)に対して、87%(切捨て)を掛けた金額を出したいと思います。 出来れば、掛けるセルにカーソルを指定して、マクロの実行と共に同じセルに計算結果が出るようにしたいのですが・・・。 セルが決まっていれば、Range("A1").select のようにセル番地を指定出来ると思うのですが、計算したいセルが散らばってあり、尚且つカーソルで指定したセルのみを計算したい場合はどのようにコードを組めばよいのでしょうか? 分かりづらくて申し訳ありませんが、宜しくお願い致します。
- 締切済み
- オフィス系ソフト
- エクセル関数。RAND。乱数の出し方。
今日会社で聞かれました。 乱数の整数を出したいのですが、 この=RANDBETWEEN(a,b)( aとbは任意の整数を入れてました。) だと、少数ででてきてしまって、整数だけの乱数でないために、数値で、桁数を0にして表示させると 同じ整数がでてくることになってしまうのです。 整数だけの、乱数を出す方法はないでしょうか????切実に急いでます。誰か助けてください!!
- ベストアンサー
- オフィス系ソフト
- EXCELでセルの塗りつぶし
エクセルで任意のセルをクリックしたらセルが塗りつぶしが出来、塗りつぶされているセルをクリックすると、塗りつぶし無しになるようにするには、どうしたらよいでしょう。 教えてください。 マクロでやると、ショートカットキーを押すか、マクロの実行をやらないと出来ないのですが、クリックするだけで出来るようにしたいのです。
- ベストアンサー
- オフィス系ソフト
- Excelマクロにて、タイマーで自動更新は出来るのでしょうか?
Excelマクロにて、タイマーで自動更新は出来るのでしょうか? Excelマクロの初心者です。 最近関数にて、時間の計算を行うbookを作成しましたが、 下記の様に手動で現時刻欄を更新している状態です。 (これは1カ所ですが、実際には複数箇所を行いたいです。) Sub 残り時間を更新() ' Range("C21").Select '現時刻欄を選択 ActiveCell.FormulaR1C1 = "=NOW()" '使用開始時刻欄に現時刻を再設定 Application.CutCopyMode = False End Sub これを別のマクロにくっつけて、例えば10分おき位に自動で 更新が出来る様な事は出来ますでしょうか? 理想は、セルに自動更新時間が任意に設定でき、その数字の基で タイマーが時間が決まり、実行ボタンでタイマー開始、停止ボタン で実行キャンセルといった、VB上では出来そうな事をExcel上 でも可能でしょうか? 良きアドバイスをいただきたいと思います。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- 【エクセル】あるセルのみ自動再計算させない方法
はじめて質問させて頂きます。 RAND関数は再計算されるたびに新しい乱数が発生します。 同シート内にRAND関数とその他関数(四則演算等)が混在しているとき、その他関数は自動計算されRAND関数だけは手動再計算(F9でなくてもいいです)で実行されるようなことは可能でしょうか? マクロは使いたくないです。(っていうか、マクロは解りません。) 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセル:シート1のセルA1が0でなければ任意のマクロを実行したい
エクセルマクロ(VBA)初心者です。よろしくお願いします。 (1)エクセルのsheet1のセルA1の値が”0(ゼロ)”でなければ、そのシート上で任意のマクロを実行し、ゼロであれば実行せずにsheet2へとぶ (2)同じようにsheet2のセルA1がゼロでなければ実効し、ゼロでなければsheet3へとぶ・・・の繰り返し(sheet50まであります。) このようなマクロ(標準モジュール)の書き方を教えてください。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excel : 関数内からセルを更新したい
実行環境は Excel 2000 です。 新規ブックに、 標準モジュールを追加し、 Function Test() Cells(2, 2) = "OK" Test = 2 End Function という関数を追加します。 Sheet1 の、 セル「A1」に「10」を入れます。 セル「A2」に「=Test() + A1」 セル「A1」を変更すると、 関数「Test()」が呼び出されます。 このとき、コードのように、B2 のセルに「OK」を 表示させたいのですが、 「アプリケーション定義またはオブジェクト定義のエラーです。(1004)」 のエラーが発生してできません。 マクロやボタンなどのイベントプロシージャでは可能なのですが、上記のようにセルに組み込んだ関数が、 更新により実行された場合はできないのでしょうか? (Cells の指定を Workbooks(1).Worksheets(1).Cells(2, 2) としてもダメでした) (「書式」→「セル」→「保護」→「ロック」はチェックされていません) すみませんが、よろしくお願い致します。
- ベストアンサー
- Visual Basic
- EXCELのボタンとハイパーリンクについて
こんにちは。よろしくお願いします。 EXCELの97でも2000でも2002でも構わないのですが、 EXCELのフォームツールバーある「ボタン」をつかって ボタンをクリックすると特定のフォルダにジャンプする という操作をしたいのですが・・・・ 今は、とりあえず任意のセルに、ハイパーリンクを作成し、 C:\My Documents\表計算 というような、ハイパーリンクを作っていて、実行すると Explorerが起動して、表計算フォルダに中に入っている ファイルを選択するという形です。 そして、キー登録のマクロで、ハイパーリンクのところを クリックする。というのを作成し、ボタンをハイパーリンクの上に 作成し(ハイパーリンクの文字をボタンで隠しているような状態です) ボタンにマクロを登録しているような状態です。(分かっていただけますか?) そこで、質問は 「ボタンに直接ハイパーリンクの記憶をさせたい。」 (任意のセルにハイパーリンクを作らなくてもいいようにしたい) ということです。きっとマクロを記述できれば良いのでしょうが、 全くマクロに対しては、知識がありません。 意味がわからなければ、いくらでも、補足しますので、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト