こんにちは、ヒガシです。
「気づけばグラフばかり作っている。」
こんな人は多いと思います。
ということでこの記事は、そんなグラフ作成を頻繁に行う人に向けて、
◆グラフの軸レンジを効率的に調整する方法
をご紹介していきます。
※最大値、最小値およびメモリの幅をインプットボックスに入力する形にしていきます。
この記事で紹介する内容を、いつもあなたがグラフを作成するエクセルファイルに作成しておくだけで、作業効率が格段に上がります。
数行のVBAコードを記述するだけですので、ぜひ一緒にやってみましょう。
それではさっそくやっていきます!
はじめに
この記事ではVBAを使った効率化手法の紹介を行います。
「VBAの使い方がわからない」
という方は以下の記事を参考に、まずはVBAが使える環境を整えておきましょう。
また、今回はあらかじめ作成されているグラフに対して、軸レンジ(数値の最小値から最大値)およびメモリの幅を自動調整する方法をご紹介していきます。
そのため、まずはグラフがないと始まりません。
というわけでまずはなんでも良いのでグラフを作成しておきましょう。
私は以下のような散布図を作成しました。
※エクセルで単純にグラフを作成した際は、参照しているデータの最小値から最大値までを表示できるように、横軸&縦軸のレンジが自動で調整されるようになっています。
軸レンジ調整マクロを記述
グラフ作成ができた方は、以下のVBAコードを記述しましょう。
X軸、Y軸用がありますので、それぞれのマクロを作成してください。
※コードの記述方法についても先ほど紹介した以下の記事に記載してあります。
【初心者用】エクセルマクロ(VBA)の始め方を詳細解説 – ヒガサラblog
まずはX軸を調整するマクロです。
Sub Graph_range_x()
'変数の型を宣言
Dim x_min As Double
Dim x_max As Double
Dim x_delta As Double
'軸調整開始
x_min = InputBox("X軸の最小値を入力してください", Default:=0)
x_max = InputBox("X軸の最大値を入力してください", Default:=100)
x_delta = InputBox("X軸のメモリ幅を入力してください", Default:=10)
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = x_min
ActiveChart.Axes(xlCategory).MaximumScale = x_max
ActiveChart.Axes(xlCategory).MajorUnit = x_delta
End Sub
次はY軸を調整するマクロです。
Sub Graph_range_y()
'変数の型を宣言
Dim y_min As Double
Dim y_max As Double
Dim y_delta As Double
'軸調整開始
y_min = InputBox("Y軸の最小値を入力してください", Default:=0)
y_max = InputBox("Y軸の最大値を入力してください", Default:=100)
y_delta = InputBox("Y軸のメモリ幅を入力してください", Default:=10)
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = y_min
ActiveChart.Axes(xlValue).MaximumScale = y_max
ActiveChart.Axes(xlValue).MajorUnit = y_delta
End Sub
使うマクロとしてはたったのこれだけ。
非常に簡単ですね。
インプットボックスのデフォオルト値は適当な値を入れていますので、あなたがよく使う値に修正しておくと良いでしょう。
⇒Default:=**の部分の数字を自由に調整しましょう。
マクロ実行ボタンの作成
コードの記述が終わったら、次はこれらのマクロを実行するボタンを作成しましょう。
ボタンの作成方法については、以下の記事をご覧ください。
私は以下のようなボタンを作成しました。
これで事前準備は完了です。
軸タイトル作成マクロの使い方
まずはグラフを作成した方は先ほどつくったグラフをクリックして選択状態にします。
選択状態になると以下の画像のように8方に白い〇が現れます。
あとはこの状態で先ほど作ったボタンを押すだけです。
まずはX軸調整から。
実行ボタンを押すと、まずは以下のようにX軸の最小値を聞いてくるウィンドウが出現します。
⇒あなたが設定したい横軸の最小値を入力します。
(今回はこのまま0としておきます。)
入力が終わったらOKボタンを押します。
すると次は同じようにX軸の最大値を入力するウィンドウが出現します。
⇒あなたが設定したい横軸の最大値を入力します。
(ここも今回はこのまま100としておきます。)
入力が終わったらOKボタンを押します。
最後にX軸のメモリ幅を入力するウィンドウが出現します。
⇒あなたが設定したい横軸のメモリ幅を入力します。
(ここも今回はこのまま100としておきます。)
入力が終わったらOKボタンを押します。
すると、以下の画像のようにX軸の最小値、最大値、メモリ幅がさきほど設定したものに変更されているはずです。
基本的にY軸もやっていくことは全く同じですので、詳細は割愛しますが、さきほど紹介したコードをそのまま実行すると以下のような結果となります。
このボタンを、いつもあなたがデータ整理なり、グラフ作成なりをするエクセルファイルに作成しておくだけで、面倒なグラフ作成作業や、データ分析に費やす時間を大幅に短縮できるはずです。
グラフ処理全般に関する自動化マクロの紹介
今回の記事はあくまでも既存のグラフに対してX軸、Y軸を調整する方法をご紹介したわけですが、以下の記事では本記事の機能はもちろん、①csvファイルの自動読み込み、②グラフの自動作成、➂グラフの表示、表示の自動切り替え等、様々な機能を実装しています。
完成版ファイルをダウンロードすることも可能です。
興味があればせひこちらもご覧ください。
おわりに
というわけで今回はグラフ作成を効率化するために、横軸&縦軸の軸レンジをボタンひとつで自動作成調整する方法についてご紹介しました。
おそらく数分でできたのではないでしょうか?
こんなちょっとした作業を事前に行っておくだけで、今後の面倒な繰り返し作業が効率化されていくのです。
このほかにも、このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。
■業務の生産性を上げたい。
■早く帰って子供と遊びたい。
こんな人はぜひ他の記事も読んでみてください。
また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。
私にわかる範囲であればご協力いたしますので。(もちろん無料です。)
それではまた!!
コメント
初めまして
ご質問がありまして、コメントさせて頂きました。
グラフの軸値変更のマクロでActiveシートではなく別シートを選択することは可能でしようか?
入力シートと出力シートがあり入力シートで出力シートにあるグラフの軸値変更をしたいと思っています。
出力シートは保護されており、保護解除→出力シートの表にデータ転記→グラフ軸値変更→シート保護という感じです。
保護解除、転記、シート保護までは出来たのですが…。
説明下手で、分かりにくいかもしれませんが教えて頂けたらと思います。
お忙しいところお手数ですが、よろしくお願いいたします。
ご質問ありがとうございます(^^)
すみません、やりたいことをよく理解できていないのですが、
「あらかじめ選択しているグラフではなく、別シートにコピーしたグラフに対して処理を実施したい」
という理解でよろしいでしょうか?
早々のご返信ありがとうございます。
説明下手で申し訳ありません。
別シートにはすでにグラフがありまして、同じシートの表から作成してあります。
あらかじめ選択できるのであればそれでも大丈夫です。
理解が悪くて申し訳ないのですが、やりたいことがいまいちよくわかりません。
シートを移動するだけではダメなのでしょうか?
遅くなり申し訳ありません。
シート移動とはシート選択とは違うのでしょうか?
まだマクロ初めて間もない初心者なもので、理解が悪く申し訳ございません。
ヒガシ様
この度は色々ご迷惑おかけしました。
今回はシート保護をしない方向で作成することとしました。
色々お知恵をお貸しして頂きありがとうございました。
返信が遅れて申し訳ありません。
あまりお力になれず申し訳ありませんでした。
また何かありましたらお気軽にお尋ねください(^^)
初めまして
ご質問したいことがございます。
複数のグラフの軸を同時に変更したい場合は
マクロはどのように入力するとよいでしょうか?
ご教授のほどよろしくお願いいたします。
ご質問ありがとうございます。
以下の記事が参考になると思いますので参考にしてみてください。
わからないようであればまた質問してください。(^^)