- 締切済み
エクセルVBA グラフ範囲をフォームで指定したい
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
フォームからグラフの作成まですべてをマクロで対応するよりも関数を使ってグラフ作成用の表を作成し、その表を使ってグラフ作成の操作をすることで十分のように思いますね。 例えばお示しの表がシート1に有るとしてA1セルに県名の文字が、B1セルには項目の文字が、C1セルから右横の列には年が入力されているとします。他のデータはお示しの表のとおりとします。 そこで東京、埼玉、山梨などの県名やA,B,Cなどの項目の設定、選択する期間の設定などはシート2で行い、それによって抽出されるデータでグラフを作成するための表もシート2に作成することにします。 シート2では A1セルに県名の文字を入力し、B1,C1,D1などのセルには抽出したい県名を東京、埼玉、、山梨などと入力します。 A2セルには項目と入力し、B2セルにはBなどと入力します。 A3セルには期間始と入力し、B3セルには2000などと入力します。 A4セルには期間終と入力し、B4セルには2010などと入力します。 そこでグラフ作成用の表ですが6行目から下方のセルを使って表示させることにします。 A6セルは空白のままでA7セルには次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)>COUNTA(B$1:J$1),"",INDEX(B$1:J$1,ROW(A1))) B6セルには次の式を入力して右横方向にドラッグコピーします。 =IF($B3+COLUMN(A1)-1>$B4,"",$B3+COLUMN(A1)-1) B7セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(OR($A7="",B$6=""),"",INDEX(Sheet1!$C:$X,MATCH($A7,Sheet1!$A:$A,0)+IF($B$2="A",0,IF($B$2="B",1,IF($B$2="C",2,0))),MATCH(B$6,Sheet1!$1:$1,0))) これでグラフ作成用の表が完成しますので表示の範囲選択してから「挿入」タブのグラフからお望みのグラフの形を選択すればよいでしょう。
お礼
回答ありがとうございます。 お礼が遅くなり申し訳ありませんでした。 1つのフォームで処理することしか考えていなかったのですが、 ご意見を参考に、 段階を追うフォームを作成することで解決しました。 最終的には、フィルタオプションでグラフ作成用のリストを作成するための フォームを段階的に作成しました。 本当にありがとうございました。