こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル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が認識されないようなのですが
どのようにすれば実行できるでしょうか;;

投稿日時 - 2009-05-07 20:17:43

QNo.4939552

すぐに回答ほしいです

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

>↑こういったことをしたいのです。
お示しの
>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

みたいなことでご要望のことができるのではないでしょうか?

投稿日時 - 2009-05-07 22:06:42

お礼

できました…
めちゃくちゃな文章になっていたのに、読み取ってくださってありがとうございました;;
本当に助かりました^^

投稿日時 - 2009-05-10 00:39:26

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>データの範囲が変わっても対応できるようにしたい...
一般機能では[名前の定義]を使うと便利です。

『Excel で名前付け範囲を使用して動的なグラフを作成する』
http://office.microsoft.com/ja-jp/excel/HA011098011041.aspx
▲こちらを参照されると良いです。

または、定番で『可変範囲のグラフ』
http://www2.odn.ne.jp/excel/waza/graph.html#SEC13

VBAで設定したい場合、 qa4756933 も参考になるかもしれません。

投稿日時 - 2009-05-08 12:54:14

お礼

ありがとうございます、しかし名前定義で設定しようとすると
http://okwave.jp/qa4939609.html
このような状況なのです…
しかし参考にさせて頂きました、ありがとうございました^^

投稿日時 - 2009-05-10 00:41:44

あなたにオススメの質問