Office 2024がリリースされました!

Excelでグラフのデータ範囲を可変にする方法

Excelでグラフのデータ範囲を可変にする方法

当サイトはアフィリエイト広告を利用しています。

今回は、Excelでグラフのデータ範囲を可変にする方法をご紹介します。

この記事を読めば、

  • 元データの増減に応じてグラフのデータ範囲を自動で変更する
  • セルで指定したデータ範囲をグラフに即座に反映させる

こうしたことが可能となります。都度手作業でデータ範囲を変更せずに済むので、効率的にグラフを作成できますよ。

Excelで元データの増減に応じてグラフのデータ範囲を自動で変更する2つの方法

Excelで元データの増減に応じてグラフのデータ範囲を自動で変更する方法には、以下のようなものがあります。

  • 元データをテーブルにする
  • データ範囲を名前で指定する

方法1:元データをテーブルにする

簡単でおすすめなのは、元データをテーブルにする方法です。元データをテーブルにすれば、元データの追加や削除に応じてグラフも増減するようになります。

元データをテーブルにするには、まず元データ全体を選択した状態で「挿入」タブ⇒「テーブル」をクリックします。

元データをテーブルにする手順1

「テーブルの作成」が表示されたら、そのまま「OK」をクリックします。

元データをテーブルにする手順2

これで元データがテーブルになります。

元データをテーブルにした結果
MEMO

テーブルのデザインは、テーブル範囲のいずれかのセルを選択すると表示される「テーブルデザイン」タブの「テーブルスタイル」で変更できます。

テーブルデザインの設定場所

この状態で元データに新たにデータを追加したり、元データの一部を削除したりすると、グラフもそれに合わせて自動で変更されます。なお、削除するときは行ごと削除してください。セルの値だけ削除するとグラフにラベルが残ってしまいます。

テーブルにした元データにデータを追加・削除した場合のグラフの挙動

方法2:データ範囲を名前で指定する

テーブルが使えない場合は、データ範囲を名前で指定する方法があります。手順は以下のとおりです。

  1. ラベルと系列の元データにそれぞれ名前を付ける
  2. グラフのデータ範囲で名前を指定する

手順1:ラベルと系列の元データにそれぞれ名前を付ける

まずはラベルと系列の元データにそれぞれ名前を付けます。

たとえば以下のような日別売上表を縦棒グラフで表す場合、ラベルの元データは「日付」、系列の元データは「売上」となりますので、「日付」のデータ範囲と「売上」のデータ範囲にそれぞれ名前を付けるということです。

日別売上表と縦棒グラフ

データ範囲に名前を付けるには、まず「数式」タブ⇒「名前の定義」をクリックします。

データ範囲に名前を付ける手順1

「新しい名前」が表示されたら、「名前」にわかりやすい名前(日付など)を入力し、「参照範囲」に以下のような数式を入力して「OK」をクリックします。

=OFFSET(データ範囲の最初のセル,0,0,COUNTA(データ範囲の列)-1,1)
データ範囲に名前を付ける手順2

OFFSET関数(オフセット関数)は、基準の位置から指定された分だけ移動した先にある、指定された範囲の参照を返す関数です。

OFFSET関数の構文

OFFSET(基準, 行数, 列数, [高さ], [幅]

基準(必須)
基準となるセル範囲を指定する。
行数(必須)
【基準】から何行分下に移動するか指定する。負の値を指定すると上に移動する。
列数(必須)
【基準】から何列分右に移動するか指定する。負の値を指定すると左に移動する。
高さ(省略可)
範囲の高さを指定する。省略すると【基準】と同じ高さとして処理される。
幅(省略可)
範囲の幅を指定する。省略すると【基準】と同じ幅として処理される。

COUNTA関数(カウントエー関数)は、空白ではないセルの個数を求める関数です。

COUNTA関数の構文

COUNTA(値1, [値2], …)

値1(必須)
検索する範囲を指定する。
値2(省略可)
検索する追加の範囲を指定する。

なお、「値」は最大255個まで指定できます。

注意

名前に記号を使用すると、このあとの手順2でうまくいかない場合があります。できれば記号なしの名前を付けましょう。

たとえば数式を=OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1!$A:$A)-1,1)とすると、「A2から0行下かつ0列右に移動した先の、A列の空白ではないセルの個数から1引いた高さ×1列分のデータ」ということになります。

つまり、「A列のデータが入力された範囲(見出し1行分を除く)」ということです。これで、データの増減に対応した範囲が作成されます。

ほかのデータ範囲にも同じように名前を付けましょう。

売上のデータ範囲にも名前を付ける

手順2:グラフのデータ範囲で名前を指定する

次に、グラフのデータ範囲でさきほど付けた名前を指定します。

グラフの系列をクリックすると数式バーにSERIES関数を使った数式が表示されるので、この関数の第2引数に「ラベルの名前」を、第3引数に「系列の名前」を入力します。

SERIES関数の表示方法

なお、「シート名!」はそのまま残してセルの部分だけ名前に置き換えてください。また[Enter]で確定するとシート名がブック名に変わりますが、仕様なので問題ありません。

「シート名!」を残してセルの部分を名前に置き換えた結果
数式編集中の表示
数式の編集を確定した結果
数式確定後の表示

SERIES関数(シリーズ関数)は、グラフのデータ系列の構成要素を定義する関数です。通常のExcel関数のように自分で入力して使うものではなく、グラフを選択したときに数式バーに自動で表示される関数です。

SERIES関数の構文

SERIES(系列名, 横軸, 縦軸, 順序, [バブルサイズ]

系列名(必須)データ系列の名前を指定する。
横軸(必須)横(項目)軸のデータ範囲を指定する。
縦軸(必須)縦(値)軸のデータ範囲を指定する。
順序(必須)グラフ内でのデータ系列の順番を指定する。
バブルサイズ(省略可)バブルの大きさに使用するデータ範囲を指定する。

この状態で元データに新たにデータを追加したり、元データの一部を削除したりすると、グラフもそれに合わせて自動で変更されます。

データ範囲を名前で指定した状態で元データにデータを追加・削除した場合のグラフの挙動

Excelで元データを削除してもグラフのラベルが削除されない原因と対処法

さきほどご紹介した方法では、元データの途中の行を削除した場合、系列だけ消えてラベルは残ってしまうことがあります。

元データの途中の行を削除した場合のグラフの挙動

これは、Excelがグラフの横軸を「日付軸」として処理してしまっているためです。

たとえば2025年1月1日~10日のデータから1月2日のデータを削除しても、Excelはその日付を「本来あるもの」と思い、削除せず残してしまうのです。

この場合、Excelに「これは日付としての名前ではなく、文字としての名前だよ」と教えてあげるため、グラフの横軸を「テキスト軸」に変更する必要があります。

テキスト軸にするには、まずグラフの横軸を右クリックし、「軸の書式設定」を選択します。

グラフの横軸をテキスト軸にする手順1

すると画面右側に「軸の書式設定」が表示されるので、「軸のオプション」⇒「軸の種類」で「テキスト軸」を選択します。

グラフの横軸をテキスト軸にする手順2

この状態で元データの途中の行を削除すると、グラフの該当部分がラベルごと削除されます。

グラフの横軸をテキスト軸に変更した結果

Excelでセルで指定したデータ範囲をグラフに即座に反映させる方法

Excelでセルで指定したデータ範囲をグラフに即座に反映させるには、グラフにしたいデータ範囲をFILTER関数で抽出し、抽出結果をグラフのデータ範囲に指定します。手順は以下のとおりです。

  1. FILTER関数の検索条件をセルで指定する
  2. グラフにしたいデータをFILTER関数で抽出する
  3. 抽出結果に名前を付ける
  4. グラフのデータ範囲に名前を指定する

手順1:FILTER関数の検索条件をセルで指定する

まずはFILTER関数の検索条件をセルで指定します。

たとえば2025年1月1日~10日のデータがあり、このうち1日~3日のデータをグラフにしたいとします。この場合、開始日セルに「2025/1/1」と、終了日セルに「2025/1/3」と入力します。ちなみに今回は元データがSheet1にあり、グラフの表示や検索条件の指定はSheet2(下記画像)でおこないます。

検索条件を入力する

手順2:グラフにしたいデータをFILTER関数で抽出する

次に、グラフにしたいデータをFILTER関数で抽出します。

抽出結果を表示したい起点のセル(左上のセル)に以下のような数式を入力します。

=FILTER(元データのセル範囲,(元データの検索範囲>=開始日セル)*(元データの検索範囲<=終了日セル))

FILTER関数(フィルター関数)は、条件に一致する行を抽出する関数です。

FILTER関数の構文

FILTER(範囲, 条件, [一致しない場合の値]

範囲(必須/)
検索する範囲を指定する。
条件(必須)
検索する条件を指定する。
一致しない場合の値(省略可)
一致する行がない場合に返す値を指定する。

今回はA5に=FILTER(Sheet1!A2:B11,(Sheet1!A2:A11>=Sheet2!B1)*(Sheet1!A2:A11<=Sheet2!B2))と入力します。これで、A5を起点に2025年1月1日~3日のデータが抽出されます。

検索条件を元にFILTER関数でデータを抽出した結果

手順3:抽出結果に名前を付ける

次に、抽出結果に名前を付けます。

「数式」タブ⇒「名前の定義」をクリックして「新しい名前」が表示されたら、「名前」にわかりやすい名前(抽出データ範囲など)を入力⇒「参照範囲」を削除して抽出結果の起点セルをクリックし、末尾に「#」と入力⇒「OK」をクリックします。ちなみに「#」は「スピル範囲」を示す記号です。

抽出結果に名前を付ける
MEMO

スピルとは、1つのセルに入力した数式の結果が、複数のセルに自動的に展開される仕組みのことです。

手順4:グラフのデータ範囲に名前を指定する

最後に、グラフのデータ範囲にさきほど付けた名前を指定します。

グラフエリアをクリックして「グラフのデザイン」タブ⇒「データの選択」をクリックします。

グラフのデータ範囲に名前を指定する手順1

「データソースの選択」が表示されたら、「グラフデータの範囲」に=抽出結果のあるシート名!抽出結果の名前と入力して「OK」をクリックします。今回は=Sheet2!抽出データ範囲と入力します。

グラフのデータ範囲に名前を指定する手順2

これで今後はセルで条件を指定するだけで、条件と一致したグラフが自動で作成されます。

検索条件を変更した場合のグラフの挙動

まとめ

今回は、Excelでグラフのデータ範囲を可変にする方法をご紹介しました。

元データの増減に応じてグラフのデータ範囲を自動で変更したい場合は、元データをテーブルにする方法が簡単でおすすめです。テーブルを使えない場合は、データ範囲を名前で指定しましょう。

セルで指定したデータ範囲をグラフに即座に反映させたい場合は、グラフにしたいデータ範囲をFILTER関数で抽出し、抽出結果をグラフのデータ範囲に指定します。最初の設定がやや面倒ですが、一度設定してしまえばあとはセルで条件を指定するだけでグラフが作れるのでとても楽ですよ!

Udemyの動画講座なら自分のペースでExcel VBAを学べる!

Udemyでは、買い切りの動画講座で好きな分野について自分のペースで学ぶことができます。

パソコンだけでなくスマホにも対応しているので、移動時間や休憩時間にスマホで学習することも可能です。

30日間の返金保証付きなので、初めてでも安心して受講できますよ。

▼ おすすめのExcel VBA講座はこちら ▼