MarMen

海をこよなく愛する大学生のかくブログです。

まったくの初心者がVBAに挑戦してみた!~ミニロト予想をつくるまで~

Excel 儲存格

はいさい!

最近は大学の授業の忙しさになんとかひついっている大学生です。

授業数が多いというわけではなく、レポートや課題の数が増えそのうえ質も求められるようになってきたので、今までよりは慎重に取り組むようになりました。グラフのタイトルのつけ忘れから、しっかりと考察ができたか、誤差を考慮しどのようにしたら数なくできるかなど、考えることがいっぱい出てきました。

忙しくなれば人は楽な方向を探し始めます

僕自身も毎回データうってグラフ作っての作業に退屈していたので楽な方法を探しました。またこんな逸話があります。

 

あの発明王エジソンの最初の発明は自動さぼり機で

退屈な仕事を自動で行い自分は昼寝をしていた

Thomas Edison

この逸話どおり、退屈なことはすべてパソコンに任せようと考えました。

 

はじめにやったのは実験のデータをボタン一つでいろんなグラフを作ってれるもの。

次が設計の際に応力がある値以下になるまで計算を繰り返すというもの。

 

2つともなかなかいいかんじにできたので、満足。そして、もっといろんなものを作ってみたいと思いました。

 

ちなみにVBAの勉強はいろいろなサイトを参考にして、すでにあるプログラムを書き換えたり付け加えたりすることで完成させることができました。

参考書を購入しようとも考えましたが、書いてあることはほぼほぼネットに転がっているのと、理論から学ぶよりプログラムをみて「ここがどう動く」と見たほうが学べるからやめました。

 

 

次になにをつくろうか考えた際に帰省したときに父親と話した

数字あての宝くじはパソコンで試行してみてそのでる確率が高い数字から選んだらあたるのではないか」

というバカなアイデアを思い出しました。これは学生時代の父親のアイデアであって、「まさかそんなはずない」と思っていた私はあいづちだけうって終わりました。でも、「あったらほしい」と言っていたので勉強がてら作ってみました。

 

今回はミニロトバージョンを作ってみました。

ミニロトは1~31までの5つの数字をあてる宝くじ。

組み合わせは全部で169911通り。

なぜミニロトかというと計算がすくないという安易な考え。

はじめはシート関数でもあるrandbetweenで試してみたのですが、やはり中心に偏ってしまう。

ちなみに過去のミニロトででた数字も、偶然でているのにも関わらず偏っているので仕方がないことだと思います。

1~31をランダムに並べる方法はあるのに、1~31のなかから5つランダムにという方法がほかに見つからなかったので、力技で!

ランダムにならべて5つ以外消去!

{ほかにいい方法があったら教えてくださいm(_ _)m}

これを200000回繰り返し、出てきた回数を表にし上位8個までをセルを赤色にするプログラムをつくりました。56通りすべてを買えたらいいんですが、そんなお金はないのであとは直感でそのなから5通りだけ選んで買ってます:)

 

まだ2回ほどしか買っていませんが、あたるはずはありません(笑)

あたらなくても、VBAについて学習できたことが今の自分にとっては価値があると言い聞かせています:)

 

次はネットで検索して上位に出てくるサイトをエクセルに記録して自動でtwitterに投稿するプログラムを作ってみたいと思っています。まだ合法か規約にそっているかどうかも調べていないでできたら記事書きたいと思っています。

 

それではマタヤーサイ:)