• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel グラフのデータ範囲に名前定義を使いたい)

Excelグラフのデータ範囲に名前定義を使う方法とは?

このQ&Aのポイント
  • Excelで可変の範囲を持つ折れ線グラフを作成するために、データ範囲に名前定義を使用する方法を紹介します。
  • グラフウィザードでデータ範囲を指定し、名前定義を行った場合、初めに指定した範囲のデータがずっと反映されてしまいます。
  • 範囲に変更があっても自動的に反映されないため、常に最新のデータを反映させるためには、別の方法を使用する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

qa4939552.htmlではうまく伝わらなかったようですね。 [名前定義]を使う可変範囲グラフは、『系列ごとに』名前を定義する必要があります。 それにSetSourceDataでセットするのではありません。 http://office.microsoft.com/ja-jp/excel/HA011098011041.aspx のようにSERIES関数を使います。 系列データだけの簡易なサンプル。 Sub try_1() 'サンプルシート作成   Const y As Long = 10 'サンプルデータ初期行数   Const x As Long = 5 'サンプル系列数   Dim cht As Chart   Dim i  As Long   Dim s  As String   With Sheets.Add     'サンプルデータ作成     With .Range("A1").Resize(y, x)       .Formula = "=INT(RAND()*100)"       .Value = .Value     End With     'グラフ作成     s = .Name & "!"     Set cht = .ChartObjects.Add(.Cells(1, x + 1).Left, 0, 500, 300).Chart     cht.ChartType = xlLine     For i = 1 To x       '[名前定義]       .Names.Add "系" & i, "=OFFSET($A$1,0," & i - 1 & ",COUNTA($A:$A))"       cht.SeriesCollection.NewSeries.FormulaR1C1 = "=SERIES(,," & s & "系" & i & ",)"     Next   End With   Set cht = Nothing End Sub 系列の名前やx軸も設定するサンプル。 Sub try_2() 'サンプルシート作成   Const y As Long = 10 'サンプルデータ初期行数   Const x As Long = 5 'サンプル系列数   Dim cht As Chart   Dim i  As Long   Dim s  As String   Dim v   With Sheets.Add     'サンプルデータ作成     .Range("A1").Value = "回"     .Range("B1").Resize(, x).Formula = "=ADDRESS(ROW(),COLUMN(),4)"     .Range("A2").Resize(y).Formula = "=ROW(A1)"     .Range("B2").Resize(y, x).Formula = "=INT(RAND()*100)"     With .Range("A1").CurrentRegion       .Value = .Value     End With     'グラフ作成     s = .Name & "!"     Set cht = .ChartObjects.Add(.Cells(1, x + 2).Left, 0, 500, 300).Chart     cht.ChartType = xlLine     .Names.Add "回", "=OFFSET($A$1,1,0,COUNTA($A:$A))"     For i = 1 To x       '[名前定義]       .Names.Add "ラベル" & i, "=OFFSET($A$1,0," & i & ")"       .Names.Add "系" & i, "=OFFSET($A$1,1," & i & ",COUNTA($A:$A))"       v = Array(s & "ラベル" & i, s & "回", s & "系" & i, i)       cht.SeriesCollection.NewSeries.FormulaR1C1 = "=SERIES(" & Join(v, ",") & ")"     Next   End With      Set cht = Nothing End Sub #VBAコードのサンプルではありません。 #[名前定義]を使った可変範囲グラフのサンプルです。 #できあがったグラフの[元のデータ]-[系列]タブ内容と、 #系列を選択して数式バーに表示されるSERIES関数と、 #[名前定義]を参照して理解してください。

kamogawawa
質問者

お礼

ありがとうございます!! VBAを実行して正しく動くことを確認しましたが 自分の知識ではプログラムの内容を理解するのにまだ 時間がかかりそうです しかし時間がかかっても少しずつ読み取っていこうと思います! 長文本当に感謝しています、ありがとうございました^^

関連するQ&A