アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルでrand関数を使用した際、更新のたびにそれまで出た値の合計をとっていきたいのですが
どのような数列になるのでしょうか?

つまりサイコロの出目の乱数をつくったとして、
1から6までの乱数をとっていき、更新のたびに
それまで出たサイコロの出目のの総和をとっていきたいんですが
数式でこれを行うのは不可能なのでしょうか?

A 回答 (4件)

こんにちは



繰り返し試行して、その結果を逐次保管してゆくのは関数だけでは無理です。

そのようなことを関数で実現したい場合には、「繰り返して試行」をまとめて行ってしまうという方法が考えられます。

簡単に言えば、50回試行したいとして…
>rand関数を使用した際~
と同じ、rand関数を含む式を、50個のセルにコピーします。
これによって得られる50個の値を、1回目、2回目…の試行と考えれば、そのまま合計なりなんなりの処理を行うことが可能になります。

50回分まとめて計算させても、確率的には同等の結果になるはずです。
ご参考まで。
    • good
    • 0

数式では無理です。


マクロで値を他の場所に保存する必要があります。(ついでに加算もすればいい)

・・・
どうしても数式だけで作りたいのであれば、
A1セルに
 =INT(RAND()*6+1)
のような乱数を発生する数式を作り、
B1セルに
 =SUM($A$1:A1)
のような積算を行う数式を作る。
A1セルからB1セルの範囲を、積算したい回数分だけ下の行に複製していく。
そうすればB列の一番下の値が演算を行った回数分の積算値になる。
    • good
    • 0

質問者はどんなレイアウトの表がお好みかを呈示すべきです。

    • good
    • 0

こんばんは!



関数では再計算されるたびにいままでのデータがクリアされてしまうので
数式では無理だと思います。

VBAであれば可能ですが、具体的にどのセルにどのように表示したいのかが不明なので
こちらで勝手にやってみました。

A1セルをダブルクリックするとA1セルに1~6の数値が表示され
その累計をB1セルに表示するとします。

↓のコードをシートモジュールにして、A1セルをダブルクリックしてみてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Address = "$A$1" Then
  Cancel = True
   With Target
    .Value = WorksheetFunction.RandBetween(1, 6)
    With .Offset(, 1)
     .Value = .Value + Target
    End With
   End With
 End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

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