対象アプリケーション |
Microsoft Office Excel 2003 Microsoft Excel 2002 |
|
この記事は、『Microsoft Office Excel 2003 Inside Out』 (Craig Stinson、Mark Dodge 著) から引用しています。この書籍の購入については、Microsoft Learning を参照してください。
|
グラフの系列を選択し、Excel の数式バーを確認すると、その系列が SERIES 関数を使用した数式によって生成されていることがわかります。SERIES は、このような場合にのみ使用される特殊な関数で、グラフの系列を定義します。この関数は、ワークシート上では使用できません。また、ワークシート関数や数式を SERIES 関数の引数に含めることもできません。
SERIES 関数の引数について
バブル チャート以外のすべてのグラフについて、SERIES 関数には次の表に示す引数を使用できます。バブル チャートの場合は、さらにバブル サイズを指定する引数を使用できます。
引数 |
必須/オプション |
指定内容 |
name |
オプション |
凡例に表示される名前 |
category_labels |
オプション |
項目軸に表示されるラベル (省略した場合は、連続した整数がラベルとして使用されます) |
values |
必須 |
プロットされる値 |
order |
必須 |
系列のプロット順 |
上記の SERIES 関数の引数は、それぞれ [元のデータ] ダイアログ ボックス ([グラフ] メニューの [元のデータ]) の [系列] タブで入力される特定のデータに対応しています。次の図は、これらの関係を示しています。
次の数式が数式バーに表示されます。
=SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$1624,Sheet1!$B$2:$B$1624,1)
この数式の引数と [元のデータ] ダイアログ ボックスの項目の関連は、以下のとおりです。
- 引数 name 引数 Sheet1!$B$1 は、[名前] ボックスに表示されています。Sheet1!$B$1 には "価格" というラベルが含まれているため、この系列は [系列] ボックスに価格として表示されています。
- 引数 category_labels 引数 Sheet1!$A$2:$A$1624 は、[項目軸ラベルに使用] ボックスに表示されています。
- 引数 value 引数 Sheet1!$B$2:$B$1624 は、[値] ボックスに表示されています。
- 引数 order このグラフには系列が 1 つしかないため、引数 order は 1 です。この既定のプロット順は、[系列] ボックスの "価格" 系列の位置に反映されます。
これらの引数が重要である理由
上記の SERIES の引数の一部に範囲名を指定することができる (場合によってはその方が都合がよい) ため、SERIES 式は重要です。範囲名を使用すると、あるデータのセットからプロットしていたグラフを、簡単にまったく異なるセットに切り替えてプロットし直すことができます。さらに重要な点は、動的な範囲名を作成して、それを SERIES の引数として使用すると、動的なグラフを作成できるということです。元のデータの変更を反映するために変更されるという点では、すべてのグラフが動的です。しかし、動的な範囲名を使用すると、新しいデータがワークシートに追加されたときに自動的にグラフがプロットされるようにしたり、ワークシート データのサブセット (たとえば、最新の 30 要素など) を自動的にプロットしたりできます。
ご存知のように、Excel におけるすべての名前は、範囲名ではなく、数式名です。一般的に、数式が範囲の参照を解決します。たとえば、Sheet1 の A1:A10 を選択し、[定義] ([挿入] メニューの [名前]) を使用して選択範囲に名前を作成すると、次のように名前が定義されます。
=Sheet1!$A$1:$A$10
名前を定義する数式に特定の関数を含めると、ワークシートの状態に応じて、その名前が別のワークシート範囲を参照するようにできます。
新しいデータを自動的にプロットする
前述の図に示されているグラフでは、Sheet1!$A$2:$A$1624 が項目軸のラベルとしてプロットされ、Sheet1!$B$2:$B$1624 が "価格" 系列の値としてプロットされています。このグラフに、列 A と列 B に追加された新しいデータ要素が自動的に取り込まれるようにするには、Sheet1 に以下の名前を作成します。
名前 |
定義 |
日付 |
=OFFSET(Sheet1!$A$1,1,0,COUNTA($A:$A)-1) |
価格 |
=OFFSET(Sheet1!$B$1,1,0,COUNTA($B:$B)-1) |
実質的に、上記の数式は、"A1 (または B1) の 1 行下から始まり、列 A (または 列 B) のデータが入力されているセルの数より 1 つ少ない数の行数の範囲を取得する" ということを意味しています。この数式により、列 A と列 B にセルが追加されると、自動的に範囲が拡張されます。追加されたデータが既存のデータのすぐ下のセルに表示されている場合のみ、範囲に新しいデータが取り込まれます。もちろん、この関数から意図したとおりの結果が返されるように、列 A と列 B のそれ以外のセルは空白にしておく必要があります。
上記のように動的な名前を定義したら、次のいずれかの方法で、名前をグラフの SERIES 式に適用できます。
- 数式バーを使用する方法 単に変更対象のグラフ系列を選択し、数式バーで SERIES 式を編集します。
- ダイアログ ボックスを使用する方法 グラフを選択して、[グラフ] メニューの [元のデータ] をクリックします。[系列] タブで、該当するデータ項目を編集します。
メモ 名前の適用に使用されるメニュー コマンド ([挿入] メニューの [名前] の [引用]) を使用して名前を適用することはできません。この場合、このメニュー コマンドは機能しません。
ダイアログ ボックスを使用した方が、変更内容を具体的に確認できるので簡単ですが、どちらの方法を使用した場合も、一方で変更した内容が他方に反映されます。いずれの場合も、シート参照はそのまま残す必要があります。たとえば、[値] ボックスに =Sheet1!$B$2:$B:1624 が入っている場合、Sheet1! 部分はそのままにして、絶対範囲アドレスだけを新しい範囲名に置き換えてください。名前がブック内で一意の場合は、次の図に示すように、最終的にブック レベルの名前として表示されます。
最新の要素だけをプロットする
上記の例の価格のグラフに、最新の 30 要素だけをプロットする場合は、名前を次のように変更します。
名前 |
定義 |
日付 |
=OFFSET(Sheet1!$A$1,COUNTA($A:$A)-30,0,30) |
価格 |
=OFFSET(Sheet1!$B$1,COUNTA($B:$B)-30,0,30) |
これらの数式により、データが入力されている領域の最後から 30 番目の行から始まる、30 行と 1 列を含んだ範囲が作成されます。
メモ グラフの系列に適用されている名前を削除すると、その系列は無効になります。削除した名前に相当していた範囲の参照は復元されません。