エクセル関数超技
グラフのデータ範囲を可変にする

Excel関数の解説、関数サンプルと高等テクニック
最終更新日:2013-06-09

グラフのデータ範囲を可変にする


データの範囲に合わせて、自動的にグラフのデータ範囲が変更されるようにします。


グラフのデータ個数が増えるたびに、

「データの選択」(2003は元データ)を変更するのは、いかにも面倒です。


できれば、マクロでやりたいところですが、マクロはちょっという人用に解説します。

一応、マクロも最後に載せています。

以下の表で説明します。

Excel解説


作成するグラフは、以下になります。

Excel解説


グラフはなんでも結構です。


ていっても限度がありますけど、上記の表なら折線か棒グラフくらいでしょう。

まず、名前定義をします。シート「リスト」を選択します。

  1. データのあるシートを選択
  2. Ctrl+F3で名前定義を起動する。メニュー等からの起動はバージョン毎に違います。
  3. 新規作成(追加)
  4. 「名前」に「グラフ軸」と入力。
  5. 「参照範囲」に「=OFFSET($A$2,0,0,COUNTA($A:$A)-1,1)
  6. 「OK」
  7. 新規作成(追加)
  8. 「名前」に「グラフデータA」と入力。
  9. 「参照範囲」に「=OFFSET($B$2,0,0,COUNTA($A:$A)-1,1)
  10. 「OK」
  11. 新規作成(追加)
  12. 「名前」に「グラフデータB」と入力。
  13. 「参照範囲」に「=OFFSET($C$2,0,0,COUNTA($A:$A)-1,1)
  14. 「OK」

2007以降の場合は、「範囲」は、「ブック」にして下さい。


では、グラフの設定です。

2007以降は、「データの選択」

Excel解説


ここで、「軸ラベル」の「編集」

Excel解説

範囲に、「ブック名!グラフ軸」と入れます。

ブック名は、拡張子も含めて正しく設定する必要があります。

続いて、「系列」の「編集」

Excel解説

これを、全ての系列に対して行います、ここでは2系列です。

名前定義したデータ列と一致するように、注意してください。

2003では、「元のデータ」

Excel解説


上図のように設定して下さい。

全ての系列に対して、行って下さい。

以上で完成です。

少し面倒ですが、一度設定してしまえば、データ個数に自動対応されますので、

その後は保守が楽になります。

しかし、この方法はいかにも面倒です。

系列が増えるたびに、名前定義からやらなければなりません。

やはり、できれば、マクロでやる事をお勧めします。

以下に、そのコードを一例を示しておきます。

Sub test()
  Dim i As Long, F As String, lngMax As Long
  lngMax = Cells(Rows.Count, 1).End(xlUp).Row
  With ActiveSheet.ChartObjects(1).Chart
    For i = 1 To .SeriesCollection.Count
      .SeriesCollection(i).Formula = _
        "=SERIES(" & _
        Cells(1, i + 1).Address(External:=True) & "," & _
        Cells(2, 1).Resize(lngMax - 1, 1).Address(External:=True) & "," & _
        Cells(2, i + 1).Resize(lngMax - 1, 1).Address(External:=True) & "," & _
        i & ")"
    Next i
  End With
End Sub


このマクロは、系列のデータが連続したセルにあることを前提にしています。

今回は、関数としての紹介なので、VBAの説明は省略します。


しかし、このマクロを実行すれば、

直ちにデータ範囲も変更されますし、系列が増えても、このマクロは変更が必要ありません。




同じテーマ「エクセル関数超技」の記事

誕生日一覧から、指定誕生月の人を全員取り出す
徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)
セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)
グラフのデータ範囲を可変にする
セルの個数を数える関数
【奥義】大量データでの高速VLOOKUP
数値を時刻に変換
関数のネスト方法
ワイルドカードが使える関数
グラフで特定の横軸の色を変更する
OFFSET関数 解説・応用・使用例

新着記事NEW ・・・新着記事一覧を見る

Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)
Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.繰り返し処理(For Next)|ExcelマクロVBA入門
8.マクロって何?VBAって何?|ExcelマクロVBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄



  • >
  • >
  • >
  • グラフのデータ範囲を可変にする

    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ