Excelマクロでグラフの凡例の位置やサイズを揃える!VBAでの解決法を紹介!
Excelでたくさんのグラフを作って、このグラフをワードなどに貼り付け資料をつくるという作業、結構頻繁にありますよね。Excelを使えば、お手軽にグラフが作れるので便利なのですが、いつの間にか凡例の位置やサイズが変わってしまうことってありませんか?グラフに資料を使う場合、使うグラフの凡例サイズや位置が整っていないと、資料の仕上がりがいまいちですよね。いくらデータが正しくても、隅々まで気が行き届いていないように見え、説得力にかけてしまいます。
ということで、グラフの凡例を統一しようと試みる訳ですが、この作業をグラフの数だけ繰り返すのはかなり大変。グラフの数が多い場合、手作業していたら…日が暮れてしまうなんてことだって考えられますよね。
今回はこのExcelで作成したグラフの凡例の位置やサイズ調整作業を効率よく、ささっと片付けてしまう方法を紹介していきます!
さて、今回の問題にどう対処するか?
実はこの問題、Excelのマクロを使うと簡単に処理できるんですよ。
グラフの凡例の位置やサイズ調整をスピーディーに済ませてしまいたいあなた!
是非この方法を参考にしてみてくださいね。
このページの中では、今回紹介するマクロを組み込んだExcelファイルをダウンロードできるようにしています。
これを使えば、一からExcelを作り込む必要もありません。ファイルを手にした瞬間、あなたの作業スピードは一気に早まります!是非使ってみてくださいね。
では本編スタートです!
Contents
『Excelグラフの凡例の位置や大きさをそろえる』には?まずは問題を整理しよう!
今回解決するのはExcelで複数作成したグラフの凡例の位置やサイズを揃えるという大変な作業をExcelにまかせて手軽に自動で終わらるという課題でしたね。
下のグラフのように、凡例サイズや位置が整っていない状態から、
グラフ上で凡例を選択し、マウス操作で大きさや位置を調整するという操作を、グラフの数だけ繰り返して整えていくという作業が必要です。作業が終わると次のように凡例が整いますね。
一つひとつの作業はさほど難しいものではありませんが、どのグラフも同じ大きさや位置に揃えるのが意外と難しいんですよね?一旦線を引いて、それに沿わせて位置を合わせたりといった苦労をして、おおよそ同じにはできますが、完全に同じ設定にはなかなかできるものではありません。あなたの抱えるお悩みわかります!
でも、エクセルのVBAでマクロを作成すれば、この手順の作業の自動化が可能!しかも作業は一瞬で済んでしまいます!このように凡例が整ったグラフが一発でできちゃいます!
『複数作成したグラフの凡例の位置やサイズをそろえる』解決の方針をチェック!
ここでは、複数作成したグラフの凡例の位置やサイズを揃えるという作業をExcelに実施させるためにはどうすればよいかをみていきます。
一つひとつ手作業で行うには、上で書いた
この作業を手作業で行うには、
グラフ上で凡例を選択、
マウスを操作し、凡例の大きさ、位置を調整、
さらに他グラフの凡例と同じ大きさ、位置になっているか確認しつつ、
この動作を全てのグラフに対して実施する
という手作業が必要でしたよね?
今回はこの手順をExcelのマクロ(VBA)をつかって自動で行っていくことにします。
まず、大きさと位置を調整するという作業は、予めExcel上で一つのグラフだけを対象にして、マウスを使い通常通りに行います。全てのグラフの調整に使う基準となるデータの作成だと思ってください。
次に、この基準となるグラフから、凡例の位置に関するデータ、大きさに関するデータを取得します。
その後、シート内の全てのデータを対象に、そのグラフの凡例の位置、大きさに関するデータを、上で取得した基準のデータで書き換えていきます。
以上の操作をVBAを使ってマクロにしてしまえば、一発で、かつ一瞬でシート内の全てのグラフの凡例の位置と大きさが、はじめに設定した基準となるグラフのものと同じにできます。
『複数作成したグラフの凡例の位置やサイズをそろえる』作業をExcelマクロで解決!
では上で考えた手順を実行する具体的なマクロの記述をみていきましょうね!VBAで書いたリストは次の通りです!
Attribute VB_Name = "Module1" '*********************************************************** '** 仕事サクサク!定時退社のために EXCEL GO! GO! '** (URL:https://excelgogo.net/) '** 是非ご活用ください♪ '*********************************************************** Sub グラフの凡例のサイズと位置を揃える() Dim objChart As Object Dim LegendLeft As Single Dim LegendTop As Single Dim LegendHeight As Single Dim Lengend As Single ' On Error GoTo ErrorHandler ' If ActiveChart Is Nothing Then MsgBox "アクティブなグラフがありません" Exit Sub End If ' 'アクティブチャートの凡例のサイズを取得します With ActiveChart.Legend LegendLeft = .Left LegendTop = .Top LegendHeight = .Height legendwidth = .Width End With ' '全てのチャートの凡例サイズを上で取得した値にする For Each objChart In ActiveSheet.ChartObjects With objChart.Chart.Legend .Left = LegendLeft .Top = LegendTop .Height = LegendHeight .Width = legendwidth End With Next ' ErrorHandler: Exit Sub ' End Sub
意外と短いプログラムでしょ?マクロを流すときには、予め基準として作ったグラフを選択した状態にしておいてくださいね。この選択された状態になっているグラフから位置と大きさに関するデータを取得するようになっています。もしグラフを選んでいない状態でマクロを実行した場合は、「アクティブなグラフがありません」というメッセージが表示されますので、グラフを選択し直して実行してくださいね。なお、グラフの数はいくつあっても大丈夫です。
まとめ
今回は、『複数作成したグラフの凡例の位置やサイズを揃える』という問題をExcelのマクロをつかって自動化し、作業を効率化する方法を紹介しました。
・グラフ上で凡例を選択し、マウス操作で大きさや位置を調整
・グラフの数だけ繰り返す
という地味で辛い作業、かつ、なかなかきれいにそろえるのが難しい作業を、
・基準となるグラフから、凡例の位置に関するデータ、大きさに関するデータを取得
・シート内の全てのデータを対象に、そのグラフの凡例の位置、大きさに関するデータを、上で取得した基準のデータで書き換える
という動きを行うマクロにするところがポイントです。
ある機能をExcelで実現するとき、その方法は一つだけとは限りません。
ExcelVBAで使用できる機能をフルに使ってシンプルに作ることもできます。ただこれにはそれなりの勉強が必要。すぐには使えず、今すぐ問題を解決したいとい状況にはあいません。ですので、このブログで紹介するマクロは、できるだけ簡単なもの、VBAにそう詳しくなくても読めそうなもの、手を加えやすいものになるように心がけています。
マクロって難しそう、と敬遠していた方にマクロって意外とお手軽ね!と感じていただき、これを応用すればあの作業も自動化できるかも!と次のステップやアクションにつなげていただければと思います。
Excelのスキルを一気に向上させて、ライバルに差をつけたい、仕事を一気にさばいてスピードアップしたい、スキルを身に着けて転職や就職に役立てたいと思ったあなた!ぜひ下のボタンをクリックしてください!
募集締め切りが迫っているので、期間限定で「短期間で実力の向上が見込めるお手頃な方法」を紹介していますよ。
ホントは管理人Goも早く知りたかった!オンラインブートキャンプで、見やすいデータをより早く仕上げる Excel術をマスターしよう!
『複数作成したグラフの凡例の位置やサイズをそろえる』マクロ入Excelファイルをプレゼント
今回紹介した『複数作成したグラフの凡例の位置やサイズを揃える』という機能をもたせたマクロを実装したExcelファイル、プログラムを記載したbasファイルが下からダウンロードできます。
legend_move.xlsm
legend_move.bas
お好きな形式のファイルをダウンロードして、実際に動かしてみたり、あなたの課題にあわせてExcelを調整して作業時間短縮、効率化に役立ててみてください!
basファイルって何?どう使うの?という方やマクロはどのようにして実行するの?と疑問に思った方は、関連記事もチェックしてみてくださいね。
最新情報をお届けします
Twitter でExcel GO! GO!をフォローしよう!
Follow @go_excelコメント
この記事へのトラックバックはありません。
はじめまして。初心者なのでとても参考になりました。ありがとうございます!
複数シートにグラフがあり、アクティブシートだけでなく全てのシートにある凡例をサイズ変更の対象としたい場合はどのように変更したらよいでしょうか?恐れ入りますが、ご教示いただけますと幸いです。お手数ですがよろしくお願い致します!
Mashさん
お問い合わせありがとうございます。複数のシート内のすべてのグラフに対して、凡例の調整を行う方法を次の関連ページで紹介させていただきました。よかったらご確認ください。
https://excelgogo.net/sameprocessing/
ファイル内のシートの数をうまく取得して、For Nextで繰り返すのがポイントです。