Excel でグラフ範囲を自動的に更新したいことってありますよね。ここでグラフの系列を選択すると、数式バーに =SERIES()
という数式が表示されています。
この =SERIES()
に対し動的に値を設定してあげたいということになります。しかし、=SERIES()
のカッコ内に OFFSET
などの関数をセットしても その関数は正しくありません。
というエラーになってしまいます。
結論としては、Microsoft Learn の記事にある通り名前の定義
機能で参照範囲に名前を付け、それを =SERIES()
に設定する必要があります。
=SERIES()
は Excel 関数なのか
ところで、この妙な制約がある =SERIES()
は Excel 関数の一種なのでしょうか。少なくとも公式の Excel 関数の一覧 には載っていません。もちろん、Excel VBA の WorksheetFunction オブジェクトから呼び出せるワークシート関数の一覧にもありません。
一方、Excel VBA のドキュメントには Series オブジェクト
および関連する SeriesCollection オブジェクト
が登場します。これらはグラフの系列を操作するときに参照するオブジェクトです。
Sub Change_Series()
ActiveChart.SeriesCollection(1).Formula = "=SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$4,Sheet1!$B$2:$B$4,1)"
End Sub
従って、系列の数式(Series Formula)が数式バーで表示・編集できるようになっているだけで、通常の関数とは異なるものという理解が良さそうです。ただ Microsoft の公式ドキュメントで明確にそう述べている箇所を見つけることはできず、同様の解釈が Microsoft Support Community で紹介されていた程度です。もし真相をご存知の方がいらっしゃれば、コメント欄等でご教授いただけますと幸いです。
参考リンク
- 定義済みの名前を使用してグラフ範囲を自動的に更新する - Microsoft 365 Apps | Microsoft Learn
- グラフの参照範囲を自動的に変更する
- Excel 関数 (アルファベット順) - Microsoft サポート
- WorksheetFunction オブジェクト (Excel) | Microsoft Learn
- How to use a macro to add labels to data points in an xy scatter chart or in a bubble chart in Excel - Microsoft Support
- Series オブジェクト (Excel) | Microsoft Learn
- SeriesCollection オブジェクト (Excel) | Microsoft Learn
- The Excel Chart SERIES Formula - Peltier Tech