Excelファイル内に複数のシートがあり、この中にグラフがいくつも入っているとします。
これらのグラフに対して同じ処理を行いたい!でも、これをの作業を何回も繰り返すのは大変なんだよな~、手作業していたら…日が暮れてしまうんだよ。。。
というような状況、ありますよね?
今回はこの、複数のシート内にあるグラフに対して、同じ処理を行うという問題に対処したいと思います。
さて、今回の問題、どう取り扱いましょうか?
実はこの問題、シートの数を上手に取得すれば、For Next文で簡単に処理できるんですよ。
複数のシートにあるグラフに同一の処理を施す、という作業を効率よく行いたいあなた!
是非この方法を参考にしてみてくださいね。
このページの中では、今回紹介する処理を組み込んだExcelファイルをダウンロードできる
ようにしています。
これを使えば、一からExcelを作り込む必要もありませんよ。ファイルを手にした瞬間、作業スピードは一気に早まります!是非使ってみてくださいね。
では本編スタートです!
Contents
『複数のシート内にあるグラフに同じ処理を施す』には?まずは問題を整理しよう!
今回解決するのは、複数のシート内にあるグラフに同じ処理を施すという大変な作業をExcelにまかせて手軽に自動で終わらせたいと
いうものですね。
この作業を手作業で行うには、
①グラフを配置しているシートに移動し、
②グラフを変更(または変更をマクロで実施)
③さらにシートを切り替え、
④このシート内のグラフに変更を施す。
⑤この動作を全てのシートに対して実施
という手順をとるのが普通なのではないでしょうか。一つひとつの作業はさほど難しいものではありませんよね。しかし、作業を組み合わせて行わないといけませんし、この作業を必要な数だけ繰り返さなければいけません。これが大変なんですよね~。お悩みわかります!
この手順をExcelで自動化してしまいましょう!
『複数のシート内にあるグラフに同じ処理を施す』解決の方針をチェック!
ここでは、複数のシート内にあるグラフに同じ処理を施すという作業をExcelに実施させるためにはどうすればよいかをみていきます。
今回はこの手順をExcelのマクロ(VBA)をつかって自動で行っていくことにしましょう。題材として、シート内にあるグラフの凡例のサイズや位置を揃えるという問題を取り扱います。この作業をマクロ化する方法は、下の関連ページで紹介していますので、是非チェックしてみてくださいね。
一つひとつ手作業で行うには、上で書いたように
①グラフを配置しているシートに移動し、
②グラフを変更(または変更をマクロで実施)
③さらにシートを切り替え、
④このシート内のグラフに変更を施す。
⑤この動作を全てのシートに対して実施
という手作業が必要でしたよね?ではExcelマクロで同じことを行うための手順を見ていきましょう。次の手順で処理を行わせます。
まず、指定したシート内の各グラフに施す処理をVBAで記述しておきます。今回の場合は、関連ページで紹介しているマクロがこれに該当しますね。
次にExcel内に存在しているシートの数を取得。
シート数が取得できたら、これをFor Next文で使い、すべてのシートに処理を行います。
これをVBAで書けば、今回の複数のシート内にあるグラフに同じ処理を施すという作業は一発で一瞬で完了します!しかも処理はプログラムした内容に従って、いつでも何度でも実施できるので、処理を間違ってしまうということもありません!
『複数のシート内にあるグラフに同じ処理を施す』問題をExcelで解決!
では複数のシート内にあるグラフに同じ処理を施すという課題を解決する、具体的なマクロの記述をみていきましょうね!VBAで書いたリストは次の通りです!
'***********************************************************
'** 仕事サクサク!定時退社のために 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 i = 1 To Sheets.Count
Sheets(i).Select
'全てのチャートの凡例サイズを上で取得した値にする
For Each objChart In ActiveSheet.ChartObjects
With objChart.Chart.Legend
.Left = LegendLeft
.Top = LegendTop
.Height = LegendHeight
.Width = legendwidth
End With
Next
Next
'
ErrorHandler:
Exit Sub
'
End Sub
この中の
Sheets.Count
がファイル内のシート数を表しています。一つのシートで処理が済むごとに、iの数が
Sheets.Count
まで大きくなり、
Sheets(i).select
でiに応じたシートを選択。選択されたシートに対して凡例の情報を書き換えていくマクロが実行されていきます。
まとめ
今回は、『複数のシート内にあるグラフに同じ処理を施す』という処理をExcelのマクロをつかって自動化し、作業を効率化する方法を紹介しました。
①グラフを配置しているシートに移動し、
②グラフを変更(または変更をマクロで実施)
③さらにシートを切り替え、
④このシート内のグラフに変更を施す。
⑤この動作を全てのシートに対して実施
という地味で辛い作業を、
・Sheets.Countでファイル内のシート数を取得
・これをFor Next文に使って、シートの数だけマクロを繰り返す
という手順でマクロを繰り返し実行するところがポイントです。
ある機能をExcelで実現するとき、その方法は一つだけとは限りません。
ExcelVBAで使用できる機能をフルに使ってシンプルに作ることもできます。ただこれにはそれなりの勉強が必要。すぐには使えず、今すぐ問題を解決したいとい状況にはあいません。ですので、このブログで紹介するマクロは、できるだけ簡単なもの、VBAにそう詳しくなくても読めそうなもの、手を加えやすいものになるように心がけています。
マクロって難しそう、と敬遠していた方にマクロって意外とお手軽ね!と感じていただき、これを応用すればあの作業も自動化できるかも!と次のステップやアクションにつなげていただければと思います。
Excelのスキルを一気に向上させて、ライバルに差をつけたい、仕事を一気にさばいてスピードアップしたい、スキルを身に着けて転職や就職に役立てたいと思ったあなた!ぜひ下のボタンをクリックしてください!
締め切りが迫っているので期間限定で「短期間で実力の向上が見込めるお手頃な方法」を紹介していますよ。
ホントは管理人Goも早く知りたかった!オンラインブートキャンプで、見やすいデータをより早く仕上げる Excel術をマスターしよう!
『複数のシート内にあるグラフに同じ処理を施す』Excelサンプルをプレゼント
今回紹介した
・Sheets.Countでファイル内のシート数を取得
・これをFor Next文に使って、シートの数だけマクロを繰り返す
という機能をもたせ、ファイル内にある全てのグラフの凡例を調整する機能を実装したExcelファイル、プログラムを記載したbasファイルが下からダウンロードできます。
お好きな形式のファイルをダウンロードして、実際に動かしてみたり、あなたの課題にあわせてExcelを調整して作業時間短縮、効率化に役立ててみてください!
legend_move2.xlsm
legend_move2.bas
basファイルって何?どう使うの?という方やマクロはどのようにして実行するの?と疑問に思った方は、関連記事もチェックしてみてくださいね。
最新情報をお届けします
Twitter でExcel GO! GO!をフォローしよう!
Follow @go_excelコメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。