- ベストアンサー
エクセルVBA ワークシート関数を使ってグラフのデータ範囲を指定したい
グラフのデータ範囲を ActiveChart.SetSourseData Range("A10:C20")と指定するのではなく 上記のA10:C20の部分をエクセルの計算式 OFFSET(A10,0,0,COUNTA(A10:30),2)等に変更し、データの範囲が変わっても 対応できるようにしたいのです(行数が10の場合や20の場合などがあります) つまり ActiveChart.SetSourseDataRange("OFFSET(A10,0,0,COUNTA(A10:30),3)0") ↑こういったことをしたいのです。 しかしこのままだとVBAでエクセルのOFFSETやCOUNTAが認識されないようなのですが どのようにすれば実行できるでしょうか;;
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>↑こういったことをしたいのです。 お示しの >ActiveChart.SetSourseDataRange(~~~) の「~~~」の部分の書式がデタラメのようですが、ワークシート上での計算式は =OFFSET(A10,0,0,COUNTA(A10:A30),30) でよろしいでしょうか? 先ず、「~~~」の部分を ダブルクォーテーション で括るのはおかしいです。 次に、VBA には、[Offset プロパティ] というものが用意されていますが、上記の条件でしたら、[Resize プロパティ] の方がよいかと存じます。 そして、ワークシートの [COUNTA 関数] につきましては、VBA 上では、 Application.WorksheetFunction.CountA(~~~) という形で使うことができますので、 Dim DataRng As Range Set DataRng = Sheets("Sheet1").Range("A10").Resize(Application.WorksheetFunction.CountA(Range("A10:A30")), 30) ActiveChart.SetSourceData Source:=DataRng みたいなことでご要望のことができるのではないでしょうか?
その他の回答 (1)
- end-u
- ベストアンサー率79% (496/625)
>データの範囲が変わっても対応できるようにしたい... 一般機能では[名前の定義]を使うと便利です。 『Excel で名前付け範囲を使用して動的なグラフを作成する』 http://office.microsoft.com/ja-jp/excel/HA011098011041.aspx ▲こちらを参照されると良いです。 または、定番で『可変範囲のグラフ』 http://www2.odn.ne.jp/excel/waza/graph.html#SEC13 VBAで設定したい場合、 qa4756933 も参考になるかもしれません。
お礼
ありがとうございます、しかし名前定義で設定しようとすると http://okwave.jp/qa4939609.html このような状況なのです… しかし参考にさせて頂きました、ありがとうございました^^
お礼
できました… めちゃくちゃな文章になっていたのに、読み取ってくださってありがとうございました;; 本当に助かりました^^