The Road to EXCELER ~エクセラーへの道~
ブログ
  • HOME »
  • ブログ »
  • 月別アーカイブ: 2017年1月

月別アーカイブ: 2017年1月

【Excel2016】サイコロの“6分の1”を検証(4)

宴のあと。。

さて、前回までで、「サイコロを1日10回振る」ことを500日目まで繰り返して結果を記録するマクロができました。

 

あとは、10回だけじゃなくて、100回,200回,300回,…と、自動で同じことを繰り返してくれるようにすればOKですね。

 

この回数のデータは、C6セル,D6セル,E6セル,…と、6行目に入っています。

(100万回までは、X6セルまで22個あります。^^;)

 

ここは、見た目には、たとえばC6セルは「10回」と見えていますが、データとしては数字の「10」が入っており、書式設定[表示形式]の「ユーザー定義」で「回」という単位を加えています。

 

マクロを走らせる前に、C6セルにカーソルを置いていたら、C6セルの「10回」から順番に左に読み取っていって、100回,200回,…とまわします。

 

たとえば、E6セルにカーソルを置いていたら、E6セルの「200回」から順番に左に 300回,400回,…とまわすような設定にしましょう。

始める位置を自分で決められるということです。

 

それには、アクティブセルの値と列位置を取得しておかないといけませんので、冒頭に、

kaisuu = ActiveCell.Value
x = ActiveCell.Column

の2つの変数を用意しましょう。

 

…と、説明がまた長くなりそうなのですが、今日はお年玉企画の回答を出さないといけないので、先に修正後の完成版マクロを提示しますね。

残りの解説は次回にします。。。

( ;゚─゚)

 

 

修正したところには「←ココ」のマークが入っています。

全部で7個ですね。

コピペできるようにテキストでも貼っておきます。

 

Sub サイコロ実験()

‘ サイコロ実験 Macro

‘ Keyboard Shortcut: Ctrl+Shift+S

    For i = 1 To 22  ‘←⑥ココ
    
    kaisuu = ActiveCell.Value  ‘←①ココ
    x = ActiveCell.Column  ‘←②ココ
    
    Range(“A2”).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Clear
    
    Range(“A1”).Select
    Selection.Copy
    Range(Cells(1, 1), Cells(kaisuu, 1)).Select  ‘←③ココ
    ActiveSheet.Paste
    
    For y = 9 To 508
    
    Calculate
    Range(“I4”).Select
    Application.CutCopyMode = False
    Selection.Copy
    Cells(y, x).Select  ‘←④ココ
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Next y
    
    Cells(6, x + 1).Select  ‘←⑤ココ
    
    Next i  ‘←⑦ココ
    
End Sub

 

C6セルにカーソルを置いて、[CTRL]+[SHIFT]+「S」で走らせてみてください。

私が実際に走らせた結果は、以下のようになりました。

 

 

「乖離率換算で最大20%以下なら確率通りとして、何回くらいサイコロを振らないといけないか?」

というのが問題でしたね。

 

何回かやってみましたが、「20%」の境目は、

平均でみると、300回近辺,確実性をとって最大値でみると、1500回近辺 という結果になりました。

 

回答は、

1. 5000回以上 または、
2. 5000回以下

の2択だったので、正解は、

「2」の 5000回以下 ということになります!

意外と少なかったですね。

 

応募総数73通、正解者の先着5名が当選者です!

メールアドレス(一部)をこちらで発表します。

 

1.hirom…
2.tsakas…
3.makoh…
4.dyna…
5.k_oka… 

 

おめでとうございます!クラッカークラッカークラッカー

幸先のいいスタートですね。音譜

後ほどメールでもご連絡さしあげますのでお楽しみに!

(^_^)v

【Excel2016】サイコロの“6分の1”を検証(3)

鮮魚のお刺身。

朝獲れの魚たちからどれを食べたいか選ばせてくれます。

すばらしい~~

(^∇^)

 

さて、前回は実際にExcel作業をしてもらって、マクロを自動記述させたところまで終わりました。

コチラです。

 

できたプログラムは、大きく5つに分けられます。(空白行を入れてわかりやすくしました。)

 

上から3つは、手順(1)から(3)そのままです。

 

4つ目は、再計算して、「2日目」のデータとしてC10セルに最大乖離率を値貼り付けするところまで、

 

5つ目は、また再計算して、「3日目」のデータとしてC11セルに最大乖離率を値貼り付けするところまで、

というプログラムになっています。

 

 

では、今日はこちらを加工していきましょう。

まず、繰り返せそうなところを探します。

 

上から、3つ目,4つ目,5つ目は、ほぼ同じですね。

「 Calculate 」から始まって、「 Application.CutCopyMode = False 」で終わるという…

(「 Calculate 」というのは再計算なので、どこでやっても問題ありませんので、3つ目の頭にも持ってきてみました。)

よって、3つ目を繰り返せば良さそうですね。

 

あとは、セルの位置を変えたいところは、Range文ではなく、「Cells」に置き換えます。

たとえば、「 Range(“C9”) 」 というのは、「 Cells(9,3) 」に置き換えることができます。

 

これらを修正したものが次のプログラムです。

変更点には、コメント文で「←ココ」と記載しておきました。

 

 

まず、簡単なところから加工して短くしますね。

③④⑤の「←ココ」は、異なる部分は、

Cells(9,3) ,Cells(10,3) ,Cells(11,3) の、9・10・11 だけですよね。

これは、1日目のデータはC9セルに,2日目はC10セルに,3日目はC11セルに…

と 500日目(C508セル)までコピペするための行の数字が変わっていってるだけです。

この部分を、繰り返しの「For ~ Next」構文を使って書き換えます。

 

 

こんなに短くなりました。^^;

これで、「サイコロを1日10回振る」ことを500日目まで繰り返して結果を記録するマクロができました。

 

では続きは次回に!^^

【Excel2016】サイコロの“6分の1”を検証(2)

新年はすき焼きがピッタリですね。

おかわり!おかわりっ!

o(^▽^)o

 

Excelの方は前回からの続きです。

いよいよサイコロを振るマクロを作っていきましょう。

 

「作っていく」と言っても、いつものように、最初はExcelの自動記述機能に作ってもらって、後でそれに少し手を加える“使い捨てマクロ”の手法で進めますのでご安心を。。

 

まず、どんな手順で動くマクロにするかを考えます。

 

 

A列でサイコロを指定回数振るので、最初にA列を何も無い状態にしておく必要がありますよね。
A1セルには元のRND関数を残しておいて、A2セル以降のA列をクリアするところから始めましょう。

その次に、サイコロを振ります。

振る回数はC6セルで指定されています。最初は「10」なので、10回振ることとして進めます。

10回振るということは、A1セルのRND関数の式をA10セルまでコピペするということです。

 

その結果は、セル範囲B1:I4 の表に反映されますが、最終的には乖離率で判断するので、I4セルに計算される「最大乖離率」の結果だけを、C9セルに値貼り付けします。

ここまでが、1セット(1日目)の実験になります。

 

Excel操作として書くと、

(1)A2セルを指定して、[SHIFT]+[CTRL]+「↓」で範囲指定して[ホーム]タブ、[クリア]→[すべてクリア]

(2)A1セルをコピーして、A10セルまで範囲指定し貼り付け

(3)I4セルをコピーして、C9セルに値のみ貼り付け

 

あとは、[F9]ファンクションキーを押して再計算をかけ、最大乖離率結果を、C10セル(2日目の欄)に値貼り付けするのが2セット目の実験になりますね。

 

Excel操作として続きを書くと、

(4)[F9]ファンクションキーを押して再計算

(5)I4セルをコピーして、C10セルに値のみ貼り付け

 

となりますね。

同様にして、3日目くらいまで、自動記述機能を使って作ってみましょう。

 

では、[開発]タブ、[マクロの記録]から、

マクロ名「サイコロ実験」、

ショートカットは「サイコロ」のSを使って、[CTRL]+[SHIFT]+「S」

としましょう。

 

 

上記手順(1)から実際に順番にExcelを操作して3日目までやってみてくださいね。

終わったら、[開発]タブ、[記録終了]です。

 

 

ひとかたまりになっている部分がわかりやすいように、空白行を入れてみましたが、プログラム部分としては、このようになっていればOKです。

 

長くなってしまったので続きは次回に!

(´∀`)/

Page 1 / 212

アーカイブ

  • facebook
  • twitter
PAGETOP