2023/07/23

Notes - Excel 連携:#13)グラフ化するデータの指定

これまでのグラフでは、シート内のデータを Excel が自動で判別していました。今回は、LotusScript から明確に指示する方法を整理します。

Excel でグラフの右クリックメニューに [データの選択] があり、これを開くと『データソースの選択』という画面が表示されます。これが実際にグラフとして表示されているデータの設定です。

これと同様の操作を行うメソッドが、Chart オブジェクトの SetSourceData メソッドです。

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 件のコメント:

コメントを投稿