• ベストアンサー

エクセルでオートフィルタ中のグラフ作成

http://kabu-macro.com/macro_apply/mix-4.html ここのページを参考に、マクロ関連の練習をしていました。 ですが、オートフィルタ中に東京支社のグラフを作成し、 その後フィルタの抽出対象を大阪支社等に変更すると、 それに伴い東京支社のグラフの内容が変化してしまいます。 グラフを変化させずに、本社と支社の三つのグラフを同時に表示できるのでしょうか。 リンク先では何の問題もなく作業が進んでいるようですが…。 尚、リンク先の画像ではオートフィルタの矢印の位置が一行ずれているのは承知しています。 この点はご指摘不要です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

そもそもグラフの元データをオートフィルタで絞り込むと、グラフの表示は、それに応じて変化します。ですからおっしゃるとおり、お示しのページの方法により同じ表からグラフを作っている限り、「同時に」東京と大阪をグラフ表示することはできないと考えられます。 ただし A 列の昇順または降順で表の各行を並べ替え済みである場合、「東京または大阪」という条件を指定して絞り込めば、うまく同時に両者をグラフ化できるかもしれませんね。行数がいつでも一定しているかとか、それはそれで問題が出てくるかもしれませんが。VBA のコードを直接編集せず、マクロ記録のみで行おうとすると、可変の行数にまで対応しつつ、東京も大阪も含むグラフを自在にセットするといったところまでは、難しいかもしれません。 あるいは、東京その他で絞り込んだ表のデータを別シートにコピペする、ということを 3 回繰り返し、貼り付けデータから 1 つのグラフを作るというマクロにしてもいいですね。 お示しのページのマクロの内容は 3 回グラフを作って 3 回印刷するという作業なので、「同時に」グラフ化するということについては特に考慮されていないし、その必要もないという意味だと思います。 なおご質問のこととは直接の関係がありませんが、グラフのデータ範囲を指定する際、表の最終行まで指定するようご注意ください。絞り込みにより最終行が非表示になっていると、指定漏れになる恐れがあるので。

BlackYoshi
質問者

お礼

ご回答ありがとうございます。 >お示しのページのマクロの内容は 3 回グラフを作って 3 回印刷するという作業なので、 >「同時に」グラフ化するということについては特に考慮されていないし、その必要もないという意味だと思います。 プリンターがないので印刷作業はマクロに組み込んでいませんでした。 そのため三つのマクロをひとつにまとめて処理させ、完了すると、 東京のグラフ→大阪のグラフ→名古屋のグラフ 大阪のグラフ→名古屋のグラフ 名古屋のグラフ と、絞り込み条件の変化に伴い、名古屋のグラフが(画面内に)三つできていて、 「あれっ、東京と大阪はどうしたのかな。」 となってしまっていました。 三都市のグラフが三つ同時に描かれていないと、資料が揃っていないように思えたのです。 印刷すれば、紙を手元に三枚並べて三都市のグラフを「同時に」確認できてOK。だったのですが、 印刷していないことを忘れていました。 致命的な勘違いです。お手数お掛けしました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

>グラフを変化させずに、本社と支社の三つのグラフを同時に表示できるのでしょうか いいえ。 資料が説明しているのは、 1.東京で絞り込み、東京のグラフを作成し、(必要な部分を)印刷する 2.名古屋で絞り込み、名古屋のグラフを「新たに作成」し、「名古屋のグラフを」印刷する 3.大阪で絞り込み、大阪のグラフをこれも新たに作成して同じく大阪を印刷する という段取りです。 「同時に」というお話はどこにもありません。3つのグラフはそれぞれ別個に作成し印刷することになっています。 もっとも資料では、最後に「グラフを印刷する」とさらっと流してますが、具体的に何をどう印刷すれば良いのかは資料の範疇ではないので説明を割愛しています。 #補足 実際に手を動かしてみると判りますが、現実にはたとえば上述の手順3で大阪に絞り直した状態では、先に作成済みの東京・名古屋のグラフも(基本的には)「大阪のグラフ」に変化しています。 このエクセルの動作を理解していれば、資料の段取りは実は例えば次のように行う事で構わないことも判ります 手順: 全データを元にして1枚のグラフを「グラフシートに」描いておく マクロの記録を開始する データを東京で絞り込む グラフシートを表示し、東京のグラフになっていることを確認して印刷する データシートに戻り、名古屋で絞り込む グラフシートを表示し、名古屋のグラフになっていることを確認して印刷する データシートに戻り、大阪で絞り込む グラフシートを表示し、大阪のグラフになっていることを確認して印刷する マクロの記録を終了する。 #更に補足 ご相談で「3つのグラフを同時に表示」とは、いったい全体「どんなグラフ」を描かせたいのか、そもそもイミフメイです。このデータから出来る事は、ふつーにただグラフを描いても、東京・名古屋・大阪に所属する社員が順不同に並んだ1つのグラフになるだけです。 「マクロ以前に」エクセルをまず手で動かして、具体的にどういう体裁のグラフにしたいのかまず手で完成形を作ってみてから、そのあとにそれを実現するにはどうマクロを細工したらいいのか考えてみてください。

BlackYoshi
質問者

お礼

ご返答ありがとうございます。 「3つのグラフを同時に表示」とは、東京、大阪、名古屋の三つのグラフを三つとも画面に表示する、 つまり画面には三つのグラフが表示されている、状態を意味していました。 記述が不足し、申し訳ありません。 同様の手順で、大阪支社のデータ・・・「マクロB」と名古屋支社のデータ・・・「マクロC」を製作します。 とリンク先にはあるので、自分は三回グラフを描いていました。 三回描くということは、最後には、それぞれ別の内容のグラフが計三個できるはず。 と勘違いしてしまったようです。同時に存在するグラフシートはひとつでよかったのですね。 また、プリンターがないので実際に印刷できなかったのも原因かもしれません。 確かにおっしゃる通りの グラフの描画は一回で済ませ、その後絞り込みの条件を二回変える という手順で十分ですよね。

関連するQ&A