ヒガサラblog

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

ヒガサラblog

【VBA】グラフ軸を指数形式に変更するマクロ!桁数指定も可能!

f:id:yshgs_elec:20201101203709j:plain

この記事では、以下の画像のように

◆グラフ軸を指数形式に変更するマクロ

をご紹介していきます。

f:id:yshgs_elec:20201101195735j:plain

この記事で紹介するマクロを、いつもあなたがグラフを作成するエクセルファイルに作成しておくだけで、作業効率が格段に上がります。

 

数行のVBAコードを記述するだけですので、ぜひ一緒にやってみましょう。

 

それではさっそくやっていきます!

 

はじめに

 この記事ではVBAを使った効率化手法の紹介を行います。

「VBAの使い方がわからない」

 という方は以下の記事を参考に、まずはVBAが使える環境を整えておきましょう。

www.higashisalary.com

 

また、今回はあらかじめ作成されているグラフに対して軸の表示形式を指数形式に自動で変更する方法をご紹介していきます。

そのため、まずはグラフがないと始まりません。

というわけで、まずはなんでも良いのでグラフを作成しておきましょう。

私は以下のような散布図を作成しました。

f:id:yshgs_elec:20201101200434j:plain

これ以降、このグラフの横軸、縦軸を指数形式に自動で変更してくれるマクロをご紹介していきます。

 

軸の表示形式を指数化するマクロ

グラフ作成ができた方は、以下の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にしています。

ここはあなたの状況に応じて適宜変更してください。

 

 

マクロ実行ボタンの作成

コードの記述が終わったら、次はこれらのマクロを実行するボタンを作成しましょう。

ボタンの作成方法については、以下の記事をご覧ください。

www.higashisalary.com

 

私は以下のようなボタンを作成しました。

f:id:yshgs_elec:20201101201222j:plain



これで事前準備は完了です。

 

軸タイトル作成マクロの使い方

まずはグラフを作成した方は先ほどつくったグラフをクリックして選択状態にします。

選択状態になると以下の画像のように8方に白い〇が現れます。

f:id:yshgs_elec:20201101201347j:plain

 

あとはこの状態で先ほど作ったボタンを押すだけです。

 

まずはX軸から。

 

実行ボタンを押すと、まずは以下のように指数化したときの小数点以下の桁数を聞いてくるウィンドウが出現します。

⇒あなたが設定したい桁数を入力します。

f:id:yshgs_elec:20201101201615j:plain

 

(今回はこのまま1としておきます。)

入力が終わったらOKボタンを押します。

 

すると、以下の画像のようにX軸の表示形式が指数化されているはずです。

f:id:yshgs_elec:20201101201718j:plain


ためしにもう一度実行して桁数を増やしてみましょう。

次は以下のウィンドウに2を入力してみます。

f:id:yshgs_elec:20201101201841j:plain

 

この場合は以下のような結果となります。

f:id:yshgs_elec:20201101201913j:plain

しっかりと小数点以下の桁数が増えていることがわかると思います。

 

基本的にY軸もやっていくことは全く同じですので、詳細は割愛しますが、さきほど紹介したコードをそのまま実行すると以下のような結果となります。

f:id:yshgs_elec:20201101202021j:plain

 きちんとY軸も指数形式に変更されていますね。

 

今回のマクロは、軸を修正したいグラフを事前にさわっておくだけで、どんなグラフにも適用可能です。

もちろん、エクセルシート上に複数のグラフが存在していても問題ありません

 

このマクロを、いつもあなたがデータ整理なり、グラフ作成なりをするエクセルファイルに作成しておくだけで、面倒なグラフ作成作業や、データ分析に費やす時間を大幅に短縮できるはずです。

 

終わりに

というわけで今回はグラフ作成を効率化するために、グラフの表示形式を指数化するマクロをご紹介しました。

このマクロをデータ分析用のエクセルシートに作成しておくだけで、今後のデータ分析作業が効率化されること間違いなしです。

 

グラフの軸調整に関しては、他にも様々な効率化スキルを紹介していますので、ぜひ以下の記事もご覧になってみてください。

【VBA】グラフ軸の数値レンジを自動調整するマクロ!Inputboxを使って簡単設定! - ヒガサラblog

【VBA】グラフのx軸、y軸のタイトルを自動作成するマクロ!Inputboxで簡単設定! - ヒガサラblog

 

このほかにも、このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。

■業務の生産性を上げたい。

■早く帰って子供と遊びたい。

こんな人はぜひ他の記事も読んでみてください。

 

また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。

私にわかる範囲であればご協力いたしますので。(もちろん無料です。)

 

最後に・・・

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

 ↓ 応援ボタン

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

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

 

Twitterもやっていますので、興味があれば覗いてみてください。

それではまた!!

 

 オススメ記事

www.higashisalary.com

www.higashisalary.com