• ベストアンサー

Excel2007で月別円グラフを作成する方法

お世話になります 1行目 B1~J1に項目名(仮にB,C,D,E,F,G,H,I,Jとします) 2行目~7行目(A2~A7)1月~6月の表です。 この表のB2~J7に月別の金額が入っています。 A!~ J7を選択して円グラフを作成すると1月のグラフになります 2月、3月…と送っていく方法はありますか 1行目を選んで、Ctrlを使って2月、3月と月を選択する方法で、で出来ますが、 何だかほかの方法がありそうで質問させていただきました。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

グラフを送っていくと言う表現がピンと来なかったのですが、選択した月のグラフを表示したいと言う事でしょうか? でしたらグラフ用の表を別に用意するのはいかがでしょう。 例えば、B10~J10に、項目名(B,C,D…)を入れ、B11に =INDEX(B2:B7,$A$11) と入れてJ11までコピー。A11に表示したい月(例:1)を入れると、A10:J11で表示したい月のデータだけが表示された表になります。 この表の範囲で円グラフを描きます。 これでA11の月数を書き換えることで指定した月のグラフが描画されます。

shinkami
質問者

お礼

ご回答有難うございました。 要を得ない質問で失礼しましたが、ご理解いただいた通りでした。 早速試してみたのですが Å列は月のため 「1月、2月、…」 A11にも「2月」のため「#VALUE!」になり… A11に「2」を入れて解決です。 A11をアクティブにして Fx クリックで、 ご提示の「範囲,索引」のパターンは無く ・配列,行番号,列番号 ・範囲,行番号,列番号,領域番号 の2パターンの選択にり、両方両方とも試してみたのですがどれもうまくいきません これらのパターンは今回の目的に摘要可能ですか? 今一度ご提示下さい。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

この質問の主旨に合うかどうかわからないが、私なりに課題を修正してやってみました。 例データ A1:I6 月 B C D E F G H I 2 12 23 32 45 27 11 18 34 3 14 25 34 47 29 13 20 36 4 5 6 B4以下データ略 VBAで Sheet2のChangeイベントに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, ActiveSheet.Range("A2:A7")) Is Nothing Then Else ActiveSheet.DrawingObjects.Delete r = Target.Row Set a = ActiveSheet.Range("A" & r & ":I" & r) Call Macro3(a) End If End Sub 標準モジュールに Sub Macro3(a) Charts.Add ActiveChart.ChartType = xlPie ActiveChart.SetSourceData Source:=a, PlotBy:= _ xlRows ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet2" End Sub ーーー これでA2:A7を選択すると その行の1行分の円グラフが自動で描かれます。

shinkami
質問者

補足

ご回答有難うございます。 ご指導の通りやった積りですが Set A = ActiveSheet.Range("A" & R & ":I" & R) のところで実行時エラー'13'(型が一致しません)にになります。 dim を追加しましたが、(VBのツールから変数の宣言を強制しますのチェックを外しています) これを外すと「変数が定義されていません」となります 今一度ご指導下さいますよう。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim R As Integer Dim A As Characters If Intersect(Target, ActiveSheet.Range("A2:A7")) Is Nothing Then Else ActiveSheet.DrawingObjects.Delete R = Target.Row Set A = ActiveSheet.Range("A" & R & ":I" & R) Call Macro3(A) End If End Sub

すると、全ての回答が全文表示されます。

関連するQ&A