この記事では、以下の画像のように
◆グラフ軸を指数形式に変更するマクロ
をご紹介していきます。
この記事で紹介するマクロを、いつもあなたがグラフを作成するエクセルファイルに作成しておくだけで、作業効率が格段に上がります。
数行のVBAコードを記述するだけですので、ぜひ一緒にやってみましょう。
それではさっそくやっていきます!
はじめに
この記事ではVBAを使った効率化手法の紹介を行います。
「VBAの使い方がわからない」
という方は以下の記事を参考に、まずはVBAが使える環境を整えておきましょう。
また、今回はあらかじめ作成されているグラフに対して、軸の表示形式を指数形式に自動で変更する方法をご紹介していきます。
そのため、まずはグラフがないと始まりません。
というわけで、まずはなんでも良いのでグラフを作成しておきましょう。
私は以下のような散布図を作成しました。
これ以降、このグラフの横軸、縦軸を指数形式に自動で変更してくれるマクロをご紹介していきます。
軸の表示形式を指数化するマクロ
グラフ作成ができた方は、以下のVBAコードを記述しましょう。
X軸、Y軸用がありますので、それぞれのマクロを作成してください。
※コードの記述方法についても先ほど紹介した以下の記事に記載してあります。
【初心者用】エクセルマクロ(VBA)の始め方を詳細解説 – ヒガサラblog
まずはX軸の表示形式を指数化するマクロです。
Sub X_Axis_index()
'変数の型を宣言
Dim index_number As Integer
Dim i As Integer
Dim num_zero As String
'指数の桁数入力
index_number = InputBox("X軸の表示形式を指数化します。小数点以下の桁数を入力してください。", Default:=1)
'文字列作成
num_zero = ""
For i = 0 To index_number - 1
num_zero = num_zero & "0"
Next
'軸を指数化
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormatLocal = "0." & num_zero & "E+00"
End Sub
次はY軸の表示形式を指数化するマクロです
Sub Y_Axis_index()
'変数の型を宣言
Dim index_number As Integer
Dim i As Integer
Dim num_zero As String
'指数の桁数入力
index_number = InputBox("Y軸の表示形式を指数化します。小数点以下の桁数を入力してください。", Default:=1)
'文字列作成
num_zero = ""
For i = 0 To index_number - 1
num_zero = num_zero & "0"
Next
'軸を指数化
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.NumberFormatLocal = "0." & num_zero & "E+00"
End Sub
使うマクロとしてはたったのこれだけ。
非常に簡単ですね。
※基本的に指数形式化する際にそんなに細かい数値を見ることはないでしょうから、指数化した時の小数点以下の桁数のデフォルト値は1にしています。
ここはあなたの状況に応じて適宜変更してください。
マクロ実行ボタンの作成
コードの記述が終わったら、次はこれらのマクロを実行するボタンを作成しましょう。
ボタンの作成方法については、以下の記事をご覧ください。
私は以下のようなボタンを作成しました。
これで事前準備は完了です。
軸タイトル作成マクロの使い方
まずはグラフを作成した方は先ほどつくったグラフをクリックして選択状態にします。
選択状態になると以下の画像のように8方に白い〇が現れます。
あとはこの状態で先ほど作ったボタンを押すだけです。
まずはX軸から。
実行ボタンを押すと、まずは以下のように指数化したときの小数点以下の桁数を聞いてくるウィンドウが出現します。
⇒あなたが設定したい桁数を入力します。
(今回はこのまま1としておきます。)
入力が終わったらOKボタンを押します。
すると、以下の画像のようにX軸の表示形式が指数化されているはずです。
ためしにもう一度実行して桁数を増やしてみましょう。
次は以下のウィンドウに2を入力してみます。
この場合は以下のような結果となります。
しっかりと小数点以下の桁数が増えていることがわかると思います。
基本的にY軸もやっていくことは全く同じですので、詳細は割愛しますが、さきほど紹介したコードをそのまま実行すると以下のような結果となります。
きちんとY軸も指数形式に変更されていますね。
今回のマクロは、軸を修正したいグラフを事前にさわっておくだけで、どんなグラフにも適用可能です。
もちろん、エクセルシート上に複数のグラフが存在していても問題ありません。
このマクロを、いつもあなたがデータ整理なり、グラフ作成なりをするエクセルファイルに作成しておくだけで、面倒なグラフ作成作業や、データ分析に費やす時間を大幅に短縮できるはずです。
おわりに
というわけで今回はグラフ作成を効率化するために、グラフ軸の表示形式を指数化するマクロをご紹介しました。
このマクロをデータ分析用のエクセルシートに作成しておくだけで、今後のデータ分析作業が効率化されること間違いなしです。
エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。
ぜひ他の記事も読んでみてください。
最後に、この記事が役に立ったという方はぜひ応援よろしくお願いします。
↓ 応援ボタン
Twitterもやっていますので、興味があれば覗いてみてください。
それではまた!!
コメント
いつもわかりやすい解説をありがとうございます。
エクセルのグラフの軸について教えていただけないでしょうか。
散布図の縦軸のみを対数目盛にした片対数グラフをよく作成するのですが、その際の縦軸の数字を「10^4」(4は上付き文字) のような表記にしたいのですが何か良い方法はないでしょうか。
ネットで検索してもよい解決策がなく、現状では軸を削除した後にテキストボックスで入力し適切な位置に配置しています。
身勝手なお願いで恐縮ですが、何卒よろしくお願いいたします。
理系の学生さん
コメントありがとうございます。
お問い合わせいただいた件ですが、
1E+04でもなく、
10^4でもなく、
10の右肩に4が乗っている形式ということですよね?
それでしたらエクセルの標準機能ではおそらくできません。
理系の学生さんのように数式で上付き文字を出力してグラフに張り付けるしかないと思います。
エクセルは非常に便利ですが、グラフはデザイン性があまり良くないのが残念ですよね。
(私も大学時代よく苦労しました。)
最近は様々なグラフ描写ツールがあると思いますので、頻繁に行う作業であれば、そういったものを試してみても良いかもしれません。
お力になれず申し訳ありません。
ご返信が大変遅くなり申し訳ございません。
ご回答いただきありがとうございます。
エクセルではできないのですね…
ご提案いただいたように、ほかのグラフ作成ソフトの使用も検討したいと思います。
ありがとうございました。