Excelマクロ(VBA)でグラフのY軸ラベル位置を一発調整!

スポンサードリンク

Excelで作ったグラフを調整していたら、気が付かないうちに、縦軸の内容を書いたラベルの位置がおかしなところに移動してしまっていた!なんてことはありませんか?

僕の経験では、ラベルの文字数を変えたときなどに、ラベルの位置がグラフの下の方に動いてしまっていたということがありました。

こうなってしまうと、せっかく作ったグラフの見栄えがよくありません。ということで修正作業をすることになるわけですが、できることならば、こんなことに時間を裂きたくありません。

修正が一箇所だけならば、この修正、まだ我慢ができますが2つ以上になると、他のグラフのタイトル位置と同じようになっているかなど位置関係を気にしないといけませんし、この作業をグラフの数だけ実施しなければなりません。

勝手に位置を変えてやがって!Excelのバカヤロー!くらい叫んでしまいそうになりますよね!精神衛生上これはよくありませんし、この作業のせいで会社からの帰りも遅くなってしまいます。

ということで、今回はこの「Excelグラフの縦軸ラベル位置の調整作業」を、効率よく、ささっと片付けてしまう方法を紹介していきます!

さて、今回の問題にどう対処するか?

古いバージョンのExcelは確か、F4キーを使って対処できていたと記憶していますが、新しいバージョンのExcelではこれが使えません。ですので、ExcelのVBAでマクロを作り対応していきます。

「Excelグラフの縦軸ラベル位置の調整作業」を効率よく行いたいあなた!

是非この方法を参考にしてみてくださいね。
このページの中では、今回紹介するExcelグラフの縦軸ラベル位置の調整機能を組み込んだExcelファイルをダウンロードできるようにしています。

これを使えば、一からExcelを作り込む必要もありませんよ。ファイルを手にした瞬間、作業スピードは一気に早まります!是非使ってみてくださいね。

では本編スタートです!

スポンサードリンク

『Excelグラフの縦軸ラベル位置を調整する』には?まずは問題を整理しよう!

今回解決するのはExcelグラフの縦軸ラベル位置を調整するという、無駄にも思えそうな作業、一見地味ですが大変な労力を使う作業を、Excelにまかせて手軽に自動で終わらせるという課題。

下の図のように、グラフのy軸ラベルの位置が狂っていても一気に調整してしまいます。 

この作業を手作業で行うには、

  • y軸ラベルを選択
  • y軸ラベルをドラッグし位置調整
  • 同じ位置になるように、同じ操作を注意を払って実施
  • 全グラフを眺め、ラベル位置におかしな点がないか確認
  • おかしなものは再度修正

という手順をとるのが普通なのではないでしょうか。一つひとつの作業はさほど難しいものではありませんよね。しかし、複数のグラフでラベル位置を合わせるという作業、これが結構大変なんですよね~。

ではこの手順をExcelで自動化してしまいましょう!

『Excelグラフの縦軸ラベル位置を調整する』マクロの方針をチェック!

ここでは、Excelグラフの縦軸ラベル位置を調整するという作業をExcelに実施させるためにはどうすればよいかをみていきます。
一つひとつ手作業で行うには、上で書いた

  • y軸ラベルを選択
  • y軸ラベルをドラッグし位置調整
  • 同じ位置になるように、同じ操作を注意を払って実施
  • 全グラフを眺め、ラベル位置におかしな点がないか確認
  • おかしなものは再度修正

という作業が必要でしたよね?

今回はこの手順をExcelのマクロ(VBA)をつかって自動で行っていくことにしましょう。Excelマクロで同じことを行うため、次の手順で処理を行わせます。

  1. 基本とするグラフのy軸ラベルの左の位置データを取得
  2. 変更するグラフからプロットエリアの情報、y軸ラベルの情報を取得
  3. 移動後のy軸ラベルの位置を計算
  4. y軸ラベルの位置データを変更
  5. 2~4を全グラフに対して実施

これをVBAで書けば、今回の「Excelグラフの縦軸ラベル位置を調整する」という作業は一発で一瞬で完了します!しかも処理はプログラムした内容に従って、いつでも何度でも実施できるので、処理を間違ってしまうということもありませんよ!

スポンサードリンク

『Excelグラフの縦軸ラベル位置を調整する』作業をExcelで解決!

ではExcelグラフの縦軸ラベル位置を調整するという課題を解決する、具体的なマクロの記述をみていきましょうね!VBAで書いたリストは次の通りです!

このマクロ実施前には、シート内のどのグラフでも構いませんので、y軸ラベル位置を調整しておいてください。このグラフを基本のグラフとしますよ。y軸ラベルの左位置をこのグラフから取得して、シート内の全てのグラフの縦軸ラベル左位置をこれに合わせます。

なお、マクロ実行時には、y軸ラベル位置を変更したグラフを選択した状態にしておいてくださいね。

Attribute VB_Name = "Module1"
'***********************************************************
'** 仕事サクサク!定時退社のために EXCEL GO! GO!
'** (URL:https://excelgogo.net/)
'** 是非ご活用ください♪
'***********************************************************
Sub 縦軸ラベルの位置を揃える()
Dim objChart As Object
Dim ylabelLeft As Single
Dim ylabelHeight As Single
Dim plotareaHeight As Single
Dim plotareaTop As Single
Dim a As Single, b As Single, c As Single, d As Single
'
On Error GoTo ErrorHandler
'
If ActiveChart Is Nothing Then
    MsgBox "アクティブなグラフがありません"
    Exit Sub
End If
'
'アクティブチャートのy軸ラベルの情報を取得します
With ActiveChart.Axes(xlValue).AxisTitle
    ylabelLeft = .Left
End With

'全てのチャートのy軸ラベルの情報を書き換えていきます
For Each objChart In ActiveSheet.ChartObjects
    'プロットエリアの情報を取得
    With objChart.Chart.PlotArea
        plotareaHeight = .Height
        plotareaTop = .Top
    End With
    '
    'y軸ラベルの情報を取得
    With objChart.Chart.Axes(xlValue).AxisTitle
    ylabelHeight = .Height
    End With
    '
    'y軸ラベル移動後の上端位置を計算
        'プロットエリア高さの中心からプロットエリア上部までの距離aを計算
            a = plotareaHeight / 2
        'プロットエリア高さの中心の位置bを計算
            b = plotareaTop + a
        'y軸ラベルの高さの半分の長さcを計算
            c = ylabelHeight / 2
        'プロットエリア高さの中心bからcだけ上方を移動後のTop位置dにする
            d = b - c
    'y軸ラベルの左とトップの位置を書き換え
    With objChart.Chart.Axes(xlValue).AxisTitle
        .Left = ylabelLeft
        .Top = d
    End With
Next
'
ErrorHandler:
Exit Sub
'
End Sub

 

まず、選択した基本のグラフからy軸ラベルの左の位置に関する情報を取得します。

次に変更するグラフから、y軸ラベルの高さに関する情報、プロットエリアのトップ位置、高さに関する情報を取得し、これらを用いて移動後のy軸ラベルの位置を決めて行きます。

y軸ラベルの左の位置は、はじめに取得した基本のグラフと同じにしますが、上下の位置は、y軸ラベルの長さがどうあっても良いように一工夫。

プロットエリア高さの中心と、y軸ラベル高さの中心が同じになるように設定することで、ラベルの文字数によらず、いつも中央に配置することができます。

このマクロを実行すると、上の図でバラバラだったy軸ラベルがほらこの通り!一発で修正完了です!

まとめ

今回は、『Excelグラフの縦軸ラベル位置を調整する』という問題をExcelのマクロをつかって自動化し、作業を効率化する方法を紹介しました。

・y軸ラベルを選択
・y軸ラベルをドラッグし位置調整
・同じ位置になるように、同じ操作を注意を払って実施
・全グラフを眺め、ラベル位置におかしな点がないか確認
・おかしなものは再度修正

という地味で辛い作業、かつ、なかなかきれいにそろえるのが難しい作業を、

1. 基本とするグラフのy軸ラベルの左の位置データを取得
2. 変更するグラフからプロットエリアの情報、y軸ラベルの情報を取得
3. 移動後のy軸ラベルの位置を計算
4. 軸ラベルの位置データを変更
5. 2~4を全グラフに対して実施

という手順で、操作を行うマクロにするところがポイントです。

下で紹介するExcelファイルも是非お使いくださいね。プログラムを書く時間も短縮できると思います。

 

ある機能を実現するとき、そのやり方は一つだけとは限りません。

ExcelVBAで使用できる機能をフルに使ってシンプルに作ることもできます。ただこれにはそれなりの勉強が必要。すぐには使えず、今すぐ問題を解決したいとい状況にはあいません。ですので、このブログで紹介するマクロは、できるだけ簡単なもの、VBAにそう詳しくなくても読めそうなもの、手を加えやすいものになるように心がけています。

マクロって難しそう、と敬遠していた方にマクロって意外とお手軽ね!と感じていただき、これを応用すればあの作業も自動化できるかも!と次のステップやアクションにつなげていただければと思います。

マクロに慣れて来た、もっとスマートで多機能なコードが書きたいという場合は、書籍やスクールなども充実していますので、どんどん次のステージに進んでいってくださいね。その第一歩であったりお手伝いにこのブログがなれば幸いです。

募集締め切りが迫っていますが、期間限定で「短期間で実力の向上が見込めるお手頃な方法」の募集がありますのでお知らせしておきますね。ぜひレベルアップに活用してください。

ホントは管理人Goも早く知りたかった!オンラインブートキャンプで、
見やすいデータをより早く仕上げる Excel術をマスターしよう!

 

『Excelグラフの縦軸ラベル位置を調整』できるExcelマクロをプレゼント

今回紹介した

  • 基本となるグラフからy軸ラベルに関する情報を取得
  • 基本となるグラフのプロットエリアの情報を取得
  • 上記の情報から、移動後のy軸ラベルのトップの位置を計算
  • 全てのグラフのラベル位置情報を計算あるいは取得したデータに書き換える

という機能をもたせたマクロを実装したExcelファイル、プログラムを記載したbasファイル
が下からダウンロードできます。

 

お好きな形式のファイルをダウンロードして、実際に動かしてみたり、あなたの課題にあわせてExcelを調整して作業時間短縮、効率化に役立ててみてください!

basファイルって何?どう使うの?という方やマクロはどのようにして実行するの?と疑問に思った方は、関連記事もチェックしてみてくださいね。


 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter でExcel GO! GO!をフォローしよう!

スポンサードリンク

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

話題をチェック!

  1. 2018-11-1

    Excelマクロ(VBA)で複数のシート上のグラフに同一の処理を行うには?

    Excelファイル内に複数のシートがあり、この中にグラフがいくつも入っているとします。 これら…
  2. 2018-9-30

    Excelの関数を使ったデータ比較法!INDIRECTとMATCHを活用する!

    最新データと一週間前のデータにどんな違いがあるのか比較してチェックしたい! でも、ひとつひとつ…
  3. 2018-7-16

    Excel マクロ(VBA)でグラフ(散布図)を大量自動作成!

    Excelはグラフを簡単につくれるのも魅力ですが、つくらなければいけないグラフが多いと、この作業も大…
ページ上部へ戻る