ヒガサラblog

サラリーマン向けに、仕事を効率良く進めていくための方法についてご紹介しています。プログラミングから対人スキルまでを幅広く掲載中。

ヒガサラblog

【エクセルVBA】グラフでパラパラ漫画!エンジンのピストン上下運動を題材に

f:id:yshgs_elec:20210112220922j:plain

この記事では、エクセル上にあるグラフの参照データを、VBAを使って自動で書き換えていくことによって、グラフをパラパラ漫画のように動かしていく方法をご紹介します。

 

この記事の内容をマスターすれば、エクセルベースで資料作成した際に、時系列データを可視化するのに役立つはずです。

 

とはいえ、実際にありそうなデータを使って解説するのもおもしろくないので、今回は少し遊んでみることにします。

 

私は自動車が好きなので、エンジン内部のピストン上下運動をエクセルグラフ上でパラパラ漫画にしてしてみようと思います。

 

エクセルVBAのスキルと同時に、エンジンのピストンモーションまで勉強できる一石二鳥の記事になっています。

ぜひ最後までご覧ください。

 

それでは早速やっていきます!

 

スポンサーリンク

 

事前準備:グラフの準備

 今回のメインテーマはグラフデータを自動で動かすということです。

ですので、まずはグラフがないと始まりません。

 

というわけで、今回は散布図で以下のようなグラフを準備しました。

f:id:yshgs_elec:20210112213322j:plain

この画像上の、ピストン形状を再現しているセルを(B11セルからG11セルまで)VBAをつかって自動で書き換えていくことによって、オレンジの線を処理ステップごとにパラパラ漫画のように動かしていきます。

 

スポンサーリンク

 

ピストンの上下運動の式

ピストンの位置は以下の式で表すことができます。

f:id:yshgs_elec:20210112213952j:plain

x:クランク軸中心からの距離

r:クランク半径

θ:クランク角度(ピストンが一番上にあるときが0deg)

l:コンロッド長

※詳細は以下のサイトを参考にさせていただきました。

ピストンの運動とピストンスピード

 

今回はこの数式を用いて、クランク角度に応じたピストン位置を計算していきたいと思います。

 

スポンサーリンク

 

グラフをパラパラ漫画のように動かす方法

今回は先ほども少し説明しましたが、グラフ上でピストン位置形状を表現している参照データをVBAでステップごとに書き換えることによって、ピストンの上下運動をパラパラ漫画にしていきます。

f:id:yshgs_elec:20210112214638j:plain

 

◆グラフをパラパラ漫画にするVBAコード

Sub Piston_motion()
'変数の型を宣言
Dim r_len, l_len As Single
Dim deg_val As Integer
'クランク半径、コンロッド長を宣言
r_len = 50
l_len = 150
'ピストン形状データの配列を準備
Dim piston(5) As Variant
'ピストン移動処理開始
For deg_val = 0 To 720
theta_rad = WorksheetFunction.Radians(deg_val)
cos1 = Cos(theta_rad)
sin1 = Sin(theta_rad)
'ピストン位置を算出
x = r_len * cos1 + Sqr(l_len ^ 2 - (r_len * sin1) ^ 2) - 200
'グラフ用データに反映
piston(0) = -20 + x
piston(1) = 0 + x
piston(2) = 10 + x
piston(3) = 0 + x
piston(4) = -20 + x
piston(5) = -20 + x
'エクセルシートに反映
Range("B11:G11") = piston
Application.Wait [Now()] + 0.001 / 86400
DoEvents
Next
End Sub

 

 コード中の何が行われているのかについては、コード中にコメントアウトで記述していますので、なんとなく何をやっているのかわかるはずです。

ぜひ1行ずつ追いかけてみてください。

 

基本的には、

①ピストンの位置を計算

②エクセルシートに反映

③グラフが動く

という作業をクランクアングル1度ごとに0度から720度まで行っているだけです。

 

すべての準備が整いましたので、最後に実際にこのコードを動かしてみましょう。

 

よーい、スタート!!!

クランク角度=0度

f:id:yshgs_elec:20210112215702j:plain

クランク角度=90度

f:id:yshgs_elec:20210112215919j:plain

クランク角度=180度

f:id:yshgs_elec:20210112215940j:plain

実際は、また上に上がって、下がって、上がるという動きをしますが、ここでは割愛します。

 

まったく伝わってないと思いますが、きちんと1度ごとになめらかにピストンが動いていく様子が確認できました。

ぜひあなたも一度この記事の内容を完全コピーしてやってみてください。

けっこうおもしろいですよ。

 

スポンサーリンク

 

おわりに

というわけで今回はエンジンのピストン上下運動を事例に、エクセルのグラフをパラパラ漫画のように動かす方法をご紹介しました。

業務の説明資料につかえるのはもちろん、家でお子さんと遊ぶ際にも活躍するスキルですので、ぜひ一度自分の手を動かしてやってみましょう!

 

このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

 

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

 ↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

 

それではまた!

 

オススメ記事

www.higashisalary.com

www.higashisalary.com