VBA 使えるソースコード

つたないソースコードを載せます。これは、他人の書いたソースコードを読む練習に最適です。初心者の方は、どうしたらきれいになるかなど考えながら活用してください。

Excel 各関数の発散のスピードは?

エントリーNo.1

y = x

とても素直で、入力したことをそのまま覚えてくれる

 

エントリーNo.2

y = logx

マイナスが大嫌い、時々扱いやすい

 

エントリーNo.3

y = x^2

y = logxとは親せきで、仲がいい。

 

エントリーNo.4

y = 2^x

のみこみが以上に早く、天才肌

 

f:id:yoronx:20200821210352p:plain

 結果、、

2^x > x^2  >>>  x > logx

今回はどうもありがとうございました。

 

VBA 久しぶりに触ってみるときに記事

お久しぶりです!!

 

5か月ぶりにさわってみて、この記事のコードを見たら、

「あ、こんな感じだったなぁ、、、」

みたいに思えたら幸いです。

 

1. 九九の表

 

yoronx.hatenablog.com

 2. 四則計算

 

yoronx.hatenablog.com

 3. 約数を出す

 

yoronx.hatenablog.com

 4. 素数判定

 

yoronx.hatenablog.com

 5. ユークリッドの互除法ってなんだっけ?

 

yoronx.hatenablog.com

 

 今日はこのくらいでほどほどに!

 

Excel さまざまなグラフの比較

どのグラフが適切か

今回は、あるデータセットをグラフで表現してみました!

 

どのグラフが見やすいのでしょう??

 

円形1

f:id:yoronx:20200312194904p:plain

 

円形2

f:id:yoronx:20200312194925p:plain

 

棒形1

f:id:yoronx:20200312195003p:plain

 

棒形2

f:id:yoronx:20200312195026p:plain

 

 

どれがいいかという正解はありません。

 

個人的には、全体を俯瞰的に見れるのは円形、ある年代が多いという印象を受けるのが棒形なのかなと思います。

 

見せたい人、対象、また、伝えたいこと、強調したいこと誤解なく表現できるグラフを選択できるように訓練していきましょう!!

 

今回使ったデータ ↓  グラフに「あ」あ入っててすみません(-_-;)

f:id:yoronx:20200312195436p:plain

 

Excel またまた乱数の収束について考察

前回の記事 ↓

 

yoronx.hatenablog.com

 前回はRANDBETWEEN(0,1)関数を使って、累積的に確率をグラフで表しました。

 

しかし問題なのは、試行回数は変えているにもかかわらず、確率の計算を1度しかしていませんでした。

 

なので、今回は1回ずつ計算をやり直したうえで、グラフで表現してみました!!

 

[具体的な方法]

・前回

 試行回数を増やしていたが、それまでの実験結果を、次の実験にも使用。

 

・今回

 それまでの結果はいったんリセットしてから、もう一度一から計算。

 

今回のほうが計算量が1000倍ぐらい多いです(-_-;)

 

結果 ↓

 

f:id:yoronx:20200311203823p:plain

やっぱり試行回数が多いと、確率は収束していきますねーー!

 

当たり前のことですが、確認できてよかった(^^)/

 

今回使用したVBAのコード ↓

 

yoronx.hatenablog.com]

 

 

 

 

Excel ランダムの収束の仕方

エクセルの「RANDBETWEEN(0,1)」の確率収束の様子!

RANDBETWEEN(0,1)関数は0または1をランダムで返す関数ですが、

 

前回は1から10000回までの精度を刻んでみてきましたが、今回はグラフで確認してみましょう!!

 

前回 ↓

yoronx.hatenablog.com

 

結果 ↓

f:id:yoronx:20200310235158p:plain

やはり試行回数が多いと、確率は0.5に近づいていますね!!

 

しかし、これは確率を計算上では、試行は1度しかしていません、、

 

なぜなら、10000個の乱数を生成しても、確率の計算は1度しかしていないからです。

 

この問題は次回確認していきましょう(^^)/

 

補足

1から10000までセルに打ち込むのに、ドラッグ以外の方法を紹介します!

 

f:id:yoronx:20200310234233j:plain

 

この「フィル」というところをクリックします。

 

f:id:yoronx:20200311000959p:plain

その後、「連続データ」をクリックしたのち、次のような画面が出たら、この画像のように入力するだけです!

 

1000ぐらいならドラッグでもいいですが、100000とかはやりたくないですよね(*_*)

Excel エクセルの乱数ってどの程度の精度??

エクセルの「RANDBETWEEN(0,1)」を制度を測定!

RANDBETWEEN(0,1)関数は0または1をランダムで返す関数ですが、

 

10,100,1000,10000回実行して、1の数を数えて精度を測ってみようと思います。

 

結果 ↓

f:id:yoronx:20200309173458p:plain

うーん、、、

 

これだけ見て、いいか悪いかは私には判断することができませんが(*_*)

 

回数が増えると、50%に近付いていることがわかります。

 

大数の法則から、たくさん試行すれば、真の確率に近付くことはわかっているので、もしかしたら、この関数は、きっちり50%の確率でランダムなのかもしれません、、

VBA 棒グラフを自動で作ってみよう

Option Explicit

Sub 棒グラフ()

Call C
Call D
Call E

End Sub

Function C()
Range("C2:C4").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet3!$C$2:$C$4")
ActiveChart.FullSeriesCollection(1).Name = "=Sheet3!$A$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(2).Name = "=Sheet3!$A$5"
ActiveChart.FullSeriesCollection(2).Values = "=Sheet3!$C$5:$C$7"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(3).Name = "=Sheet3!$A$8"
ActiveChart.FullSeriesCollection(3).Values = "=Sheet3!$C$8:$C$10"
ActiveChart.FullSeriesCollection(3).XValues = "=Sheet3!$B$2:$B$4"
ActiveChart.SetElement (msoElementLegendRight)

ActiveSheet.ChartObjects(1).Chart.HasTitle = True
ActiveSheet.ChartObjects(1).Chart.ChartTitle.Text = Cells(1, 3).Value

ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Cells(2, 9).Value
End Function

Function D()
Range("D2:D4").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet3!$D$2:$D$4")
ActiveChart.FullSeriesCollection(1).Name = "=Sheet3!$A$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(2).Name = "=Sheet3!$A$5"
ActiveChart.FullSeriesCollection(2).Values = "=Sheet3!$D$5:$D$7"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(3).Name = "=Sheet3!$A$8"
ActiveChart.FullSeriesCollection(3).Values = "=Sheet3!$D$8:$D$10"
ActiveChart.FullSeriesCollection(3).XValues = "=Sheet3!$B$2:$B$4"
ActiveChart.SetElement (msoElementLegendRight)

ActiveSheet.ChartObjects(2).Chart.HasTitle = True
ActiveSheet.ChartObjects(2).Chart.ChartTitle.Text = Cells(1, 4).Value

ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Cells(2, 9).Value
End Function

Function E()
Range("E2:E4").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet3!$E$2:$E$4")
ActiveChart.FullSeriesCollection(1).Name = "=Sheet3!$A$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(2).Name = "=Sheet3!$A$5"
ActiveChart.FullSeriesCollection(2).Values = "=Sheet3!$E$5:$E$7"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(3).Name = "=Sheet3!$A$8"
ActiveChart.FullSeriesCollection(3).Values = "=Sheet3!$E$8:$E$10"
ActiveChart.FullSeriesCollection(3).XValues = "=Sheet3!$B$2:$B$4"
ActiveChart.SetElement (msoElementLegendRight)

ActiveSheet.ChartObjects(3).Chart.HasTitle = True
ActiveSheet.ChartObjects(3).Chart.ChartTitle.Text = Cells(1, 5).Value

ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Cells(2, 9).Value
End Function

 

結果 ↓

f:id:yoronx:20200308174036p:plain