The Road to EXCELER ~エクセラーへの道~
ブログ
  • HOME »
  • ブログ »
  • マクロ関連(使い捨てマクロ)

マクロ関連(使い捨てマクロ)

【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です。

 

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

(´∀`)/

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

神戸牛!

フランベの瞬間が思いのほか上手に撮れました!

o(〃^▽^〃)o

 

さて、前々回書いた、サイコロを n 回振って、どの目もまんべんなく 6分の1で出る n はどの程度なのか確認する実験ですが、

メルマガ読者限定で、3万円相当のお年玉プレゼント企画の問題にしてみました。

 

それで、

「正解者の先着5名にプレゼント」

としたんですが、そしたら初日に応募が殺到して、期日がまったく意味の無いものとなってしまいました。

(そりゃそうですよね…^^; )

 

…なので、すみませんが、メール配信日の午前中に応募いただいた方以外は、当選の確率ゼロパーセントとなってしまいましたので、早めにお伝えしておきます。

次の機会があったらまたちょっと違うルールを考えますね。。

(;^_^A

 

Excelシートの方は、マクロを組んでいく前に、フォーマットを作っておきましょう。

こんな形にしてみました。

 

 

A列でサイコロを振ります。

今は、A1セルのRND関数をA10までコピペしたので、10回振ったことになっています。

これの結果を受けるのが、セル範囲B1:I4 の表になります。

ここまでは前回の記事をご参照ください。

 

それで、1セットだけだといまいち信用できないので、毎日毎日、来る日も来る日も同じことをExcelにやってもらうとして、500日分=500セットの結果(I4セルの最大乖離率の部分)を記録していきます。

それ用のセルが、C9セル以降の空白部分になります。
 

たとえば、サイコロを10回振った結果の最大乖離率の1セット目の値を C9セルに、2セット目の値を C10セルに、3セット目の値を C11セルに…と入れていきます。

現在の値であれば、I4セルは「Max 100%」となっているので、C9セルにはこの「100%」をコピペします。

 

6行目の青文字は、回数です。

どれだけシミュレーションするか、ですが、10回,100回,200回,300回,…と、適当に間を空けて100万回まで実験していきましょう。

 

そして、7行目に、1日目から500日目までの最大乖離率の平均値を計算する欄、8行目に、最大値を計算する欄を作っておきます。

今、C7セルに、「=AVERAGE(C9:C508)」と入力されているのが見えていますが、そういう意味です。

なので、C8セルは、もちろん 「=MAX(C9:C508)」ですね。

 

では、次回からこのフォーマットを埋めていくマクロを作っていきましょう。

(*^ー^)ノ

Page 2 / 33123»

アーカイブ

  • facebook
  • twitter
PAGETOP