これまでのグラフでは、シート内のデータを Excel が自動で判別していました。今回は、LotusScript から明確に指示する方法を整理します。
Excel でグラフの右クリックメニューに [データの選択] があり、これを開くと『データソースの選択』という画面が表示されます。これが実際にグラフとして表示されているデータの設定です。
これと同様の操作を行うメソッドが、Chart オブジェクトの SetSourceData メソッドです。
『データソースの選択』画面はなかなか複雑なのですが、このメソッドの引数は2つだけといたってシンプルです。ポイントは Source という引数の指定の仕方ということのようです。
この Source 引数は Range オブジェクトを指定する仕様となっています。具体的に指定方法を探っていきましょう。
単純な場合
まずは、グラフ化するセルが長方形(矩形)で構成される例です。
この場合は、単純に範囲の Range オブジェクトを引数に SetSourceData メソッドをコールするだけです。
例えば、
Call oChart.SetSourceData(oSheet.Range("A1:B31")) |
と設定すると、ユーザ数だけのグラフとなります。
次のように設定すると、
Call oChart.SetSourceData(oSheet.Range("A1:C31")) |
Excel が自動でセットしたのと同じ状態になります。
X 軸と Y 軸を明確に指定する場合
それでは、A 列を横軸(日付)、C 列だけを Y 軸に表示するためにはどうすればよいのでしょうか?
Excel で実際に操作をするとそのヒントが掴めます。グラフの右クリップメニューから『データソースの選択』画面を開きます。「グラフデータの範囲」の右のアイコンをクリックし、シートから A 列と C 列を選択します(A 列をクリックしてから Ctrl キーを押しながら C 列をクリック)。すると範囲の指定がカンマ区切りで表示されます。
このようにカンマ区切りで指定すると、離れた列を1つのグラフにすることができます。
Lotus Script で記述すると次のようになります。
Call oChart.SetSourceData(oSheet.Range("A1:A31, C1:C31")) |
実行すると、増減の列だけがグラフとして表示されます。
SetSourceData メソッドを利用するときには、横軸と縦軸のカラムが隣接しているかにかかわらず、カンマ区切りで指定すると汎用的だと思います。私は通常以下のように記述しています。
Call oChart.SetSourceData(oSheet.Range("A:A, B:C")) |
ちなみに Range オブジェクトの指定は、列だけをコロンでつなげることにより、行の指定を省略することができます。
前回 | Notes - Excel 連携 | 次回 |
0 件のコメント:
コメントを投稿