![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
今折れ線グラフを作成しています。
データの範囲設定で悩んでいます。
項目軸ラベルのセル範囲と、グラフデータのセル範囲を指定を以下のように設定し折れ線グラフを作成しました。
Set RngData = Union(Wb3Sh6.Range(Cells(範囲1, 1), Cells(範囲2 - 1, 1)), _
Wb3Sh6.Range(Cells(範囲1, 12), Cells(範囲2 - 1, 12)), _
Wb3Sh6.Range(Cells(範囲1, 18), Cells(範囲2 - 1, 18)), _
Wb3Sh6.Range(Cells(範囲1, 33), Cells(範囲2 - 1, 33)), _
Wb3Sh6.Range(Cells(範囲1, 34), Cells(範囲2 - 1, 34)), _
Wb3Sh6.Range(Cells(範囲1, 39), Cells(範囲2 - 1, 39)), _
Wb3Sh6.Range(Cells(範囲1, 40), Cells(範囲2 - 1, 40)))
ActiveChart.SetSourceData Source:=RngData, PlotBy:=xlColumns
ですが。
項目軸を「Wb3Sh6.Range(Cells(範囲1, 12), Cells(範囲2 - 1, 12)), 」
のみとしたいのに
項目軸が「Wb3Sh6.Range(Cells(範囲1, 1), Cells(範囲2 - 1, 1)), _
Wb3Sh6.Range(Cells(範囲1, 12), Cells(範囲2 - 1, 12)), _
Wb3Sh6.Range(Cells(範囲1, 18), Cells(範囲2 - 1, 18)), _
Wb3Sh6.Range(Cells(範囲1, 33), Cells(範囲2 - 1, 33)), _
Wb3Sh6.Range(Cells(範囲1, 34), Cells(範囲2 - 1, 34)), _
Wb3Sh6.Range(Cells(範囲1, 39), Cells(範囲2 - 1, 39)), _」
となってしまいます。
項目軸を確実に設定したいのですが、どうすればよいでしょうか。
No.1ベストアンサー
- 回答日時:
>項目軸を確実に設定したいのですが、どうすればよいでしょうか。
どんなデータで、どの部分を確実になのかわかりませんが・・・・。
1行・1列は項目名として、データは変数で行範囲を指定し、
12~40列の指定列を対象とする場合、以下のコードで設定出来ます。
また、グラフを選択していない状態でも動作するように、
名前で対象のグラフを選択してから値を変更するようにしています。
コード内でグラフの名前は「グラフ 1」としています。
(異なる場合はコード内の該当位置を修正してください)
>項目軸を「Wb3Sh6.Range(Cells(範囲1, 12), Cells(範囲2 - 1, 12)), 」
>のみとしたいのに
コード内のArray(1, 12, ・・・)で対象の列番号をカンマ区切りで指定してください。
For Each myCol In Array(1, 12)
で1列目(項目列)と12列目(データ列)を対象範囲として設定します。
■VBAコード
Sub sample()
Dim RngData As Object, Wb3Sh6 As Worksheet
Dim 範囲1 As Long, 範囲2 As Long
Dim myCol As Variant
'定数を設定
Set Wb3Sh6 = ActiveSheet
範囲1 = 1: 範囲2 = 11
'項目範囲を設定
With Wb3Sh6
For Each myCol In Array(1, 12, 18, 33, 34, 39, 40)
If RngData Is Nothing Then
Set RngData = .Range(.Cells(範囲1, myCol), .Cells(範囲2 - 1, myCol))
Else
Set RngData = Union(RngData, .Range(.Cells(範囲1, myCol), .Cells(範囲2 - 1, myCol)))
End If
Next myCol
End With
'項目を反映
ActiveSheet.Shapes("グラフ 1").Select
ActiveChart.SetSourceData Source:=RngData, PlotBy:=xlColumns
End Sub
![「vba グラフ データ範囲設定」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/c/18904370_5497ef2ac8073/M.jpg)
eden3616様
ご回答、ありがとうございます。
(お礼が遅くなって申し訳ありません)
記載いただいたコードを埋め込んで稼働しましたが、症状は変わりませんでした。
※グラフは全部で10個作成(データはすべて違う)するのですが、9個目だけバグが出てしまう
バグ・・・項目軸が複数選択される
グラフを作成するデータが悪いのだと思います。
データを精査し、なぜ一つだけバグが出るのか調べてみます。
ありがとうございました。
No.2
- 回答日時:
>※グラフは全部で10個作成(データはすべて違う)するのですが、9個目だけバグが出てしまう
> バグ・・・項目軸が複数選択される
(1)ベースとなるデータに差異が無いかの確認と、差異による処理内容への影響
(2)Debug.Print RngData.AddressなどをFor内に入れて、ブレークポイントをいれてから実行
(3)ステップ実行で各変数値が正常であるか確認
異常を試してみてください。
再度の回答、ありがとうございます。
(1)ベースとなるデータに差異が無いかの確認と、差異による処理内容への影響
⇒ 見たところ差異に気づくことができませんでした。
そのため、元データを最初から作りなおしました。
バグがでる9個目のデータのブランク行をカットするとうまくいくことが分かりました。
ただ、ブランク行が根源かどうかは不明です。
(2)Debug.Print RngData.AddressなどをFor内に入れて、ブレークポイントをいれてから実行
⇒ イミディエイトウインドウにて確認しました。
きれいに表示されました♪
(3)ステップ実行で各変数値が正常であるか確認
⇒ 表示を確認しましたが、正常値が取れていました。
よくよく10個のグラフを確認すると、2つのグラフに他のバクが出ていました。
系列名と系列値に対するバグです。
系列名はセル1個、系列値はその他セル100個としたいのに、
2つのグラフだけ系列名をセル4個持ってきてしまいます。
これも原因が不明です。
対策として、一度作成したグラフを修正するよう、以下のコードを埋め込みました。
コードがぐちゃぐちゃになりましたが、グラフとしてはきれいに仕上がりました。
原因が分からずモヤモヤしますが、一先ずこれで進めようと思います。
データを開示することができず、明確な説明ができずに申し訳ありません。
2度のご回答、ありがとうございました。
ActiveChart.FullSeriesCollection(1).XValues = Wb3Sh6.Range(Cells(範囲1 + 1, 1), Cells(範囲2 - 1, 1))
ActiveChart.FullSeriesCollection(1).Name = Wb3Sh6.Cells(範囲1, 12)
ActiveChart.FullSeriesCollection(1).Values = Wb3Sh6.Range(Cells(範囲1 + 1, 12), Cells(範囲2 - 1, 12))
ActiveChart.FullSeriesCollection(2).Name = Wb3Sh6.Cells(範囲1, 18)
ActiveChart.FullSeriesCollection(2).Values = Wb3Sh6.Range(Cells(範囲1 + 1, 18), Cells(範囲2 - 1, 18))
ActiveChart.FullSeriesCollection(3).Name = Wb3Sh6.Cells(範囲1, 33)
ActiveChart.FullSeriesCollection(3).Values = Wb3Sh6.Range(Cells(範囲1 + 1, 33), Cells(範囲2 - 1, 33))
ActiveChart.FullSeriesCollection(4).Name = Wb3Sh6.Cells(範囲1, 34)
ActiveChart.FullSeriesCollection(4).Values = Wb3Sh6.Range(Cells(範囲1 + 1, 34), Cells(範囲2 - 1, 34))
ActiveChart.FullSeriesCollection(5).Name = Wb3Sh6.Cells(範囲1, 39)
ActiveChart.FullSeriesCollection(5).Values = Wb3Sh6.Range(Cells(範囲1 + 1, 39), Cells(範囲2 - 1, 39))
ActiveChart.FullSeriesCollection(6).Name = Wb3Sh6.Cells(範囲1, 40)
ActiveChart.FullSeriesCollection(6).Values = Wb3Sh6.Range(Cells(範囲1 + 1, 40), Cells(範囲2 - 1, 40))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Excel(エクセル) エクセル VBAの構文について 2 2023/02/10 18:26
- Visual Basic(VBA) 4月~3月まで12カ月横に並んだ表へ指定範囲を貼り付けたい。 Sheet2の指定範囲、Range(" 2 2022/11/30 16:37
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:07
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで(~以上,~以下)...
-
シグマの範囲が2nまでの関数で...
-
(x2乗+9)って因数分解出来ます...
-
年代と年台・・・どちらが正し...
-
X3乗―2=0
-
基礎問題精講、演習問題47(2)(i...
-
「余年」の意味について教えて...
-
文字係数の2次不等式についてで...
-
エクセルに入力されたリストか...
-
θが微小の時、sinθ=θ、cosθ=1と...
-
2次関数
-
【 数I 二次方程式の実数解 】 ...
-
言葉、日本語について。 所要範...
-
三角関数の範囲について、 0≦x≦...
-
Excelマクロで質問です。変数宣...
-
vba グラフ データ範囲設定
-
整式の公約数・公倍数について
-
方程式 e^x=x+1 の解
-
高校数学、三角関数についてで...
-
記録の範囲、分布の範囲、数値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで(~以上,~以下)...
-
三角関数の範囲について、 0≦x≦...
-
年代と年台・・・どちらが正し...
-
三角関数 -3分のπって3分の5...
-
「余年」の意味について教えて...
-
シグマの範囲が2nまでの関数で...
-
指定範囲内のオートシェイプを...
-
COUNTIF関数 ある範囲の数値で...
-
離れた列での最大値の求め方
-
2重積分の変数変換の範囲につ...
-
判別式の使う時とか使わない時...
-
X3乗―2=0
-
お教えで来る範囲内で 文言が変...
-
不等式で辺々加えるときに不等...
-
(x2乗+9)って因数分解出来ます...
-
エクセルでPrint Area と表示さ...
-
方程式 e^x=x+1 の解
-
極座標ではr>0の時のみ考えて、...
-
文字係数の2次不等式についてで...
-
約10ヶ月で20キロ太るて異常で...
おすすめ情報