
理系の人間ならば、誰もが実験データのまとめ作業を行ったことがあると思います。特に実験系の研究をしている人ならばデータをまとめる回数はとても多いと思います。そこで、今回は作業効率の改善の為にエクセルでグラフを作成するマクロを紹介したいと思います。
グラフ作成マクロの目的・適用対象
今回紹介するグラフ作成マクロは同じ形式で出力されたデータが複数存在するときの効率化を目的としています。
具体的に言うと、ある装置を使用した実験を繰り返す場合を想定しています。実験ごとに実験データがファイルに保存された場合、一つ一つグラフを作成するのは面倒ですよね。
グラフ作成マクロを利用することで、作業効率の改善・グラフスタイルの統一が容易に実現できます。
グラフ作成マクロのコード
次のようなマクロを作成しました。
Sub make_graph()
'画面、自動計算オフ
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
'ファイルのオープン
Dim file_name
file_name = ActiveSheet.Range("B2")
'ファイルの有無
If Dir(ThisWorkbook.Path & "/" & file_name) <> "" Then
Workbooks.Open (ThisWorkbook.Path & "/" & file_name)
'グラフの作成
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlXYScatter 'グラフの種類を設定
.SetSourceData Range("A1:B30") 'グラフ化するデータ指定
.Axes(xlValue).MaximumScale = 10 '軸の最大値変更
.Axes(xlValue).MinimumScale = 0 '軸の最小値変更
.HasTitle = True
.ChartTitle.Text = "タイトル"
With .Axes(xlCategory, xlPrimary) '---主軸項目軸
.HasTitle = True '---軸ラベル表示
.AxisTitle.Text = "Xラベル" '---軸ラベル文字列設定
End With
With .Axes(xlValue, xlPrimary) '---主軸数値軸
.HasTitle = True '---軸ラベル表示
.AxisTitle.Text = "Yラベル" '---軸ラベル文字列設定
End With
End With
'グラフの位置変更
With ActiveSheet.ChartObjects("グラフ 1")
.Left = Range("F2").Left
.Top = Range("F2").Top
End With
'ファイルsave
'ActiveWorkbook.Save
'Workbooks.Close ("" & file_name)
Else
MsgBox "ファイルが存在しません。", vbExclamation
End If
'画面、自動計算オフ
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
使用方法は次の通りです。
①”B2″にグラフ作成する対象のファイル名を記入&マクロを保存したブックの作成。
②①で作成したファイルをグラフ作成する対象のファイルと同じフォルダに保存。
③①で作成したファイルを開き、”B2″にデータがあるシートをアクティブにした状態でマクロ実行。
かなりコメントを書いているので詳細な説明は不要と思います。必要に応じて、グラフの種類、データ範囲、軸の最大値・最小値、タイトル、Xラベル、Yラベルを変更してください。
おわりに
余談ですが、筆者は学生の時にプログラムを組んでシュミレーションをしていました。その際、効率化の為にパラメータ振り、グラフ作成・表示形式の変更、データの保存までをプログラムを作って全て自動で行っていました。
初心者の状態から上記のようなプログラムを作成するのは時間がかかりますが、手動で何回もやることを考えると時間の短縮が期待できるので、みなさんもマクロ作成に挑戦してみてはいかがでしょうか。
リンク
コメント