Excelの折れ線グラフの線をマクロから削除する方法

このQ&Aのポイント
  • Excelの折れ線グラフの線をマクロを使用して削除したい場合、最大6本の線を削除することができます。
  • しかし、実行時エラー1004が発生し、3本の線しか削除できない問題が発生しています。
  • [データソースの選択]ダイアログで表示できないというエラーも発生しています。
回答を見る
  • ベストアンサー

Excelの折れ線グラフの線をマクロから削除したい

いつも楽しく勉強させていただいております。 OSはWin7でOffice365です。 Excelマクロはまだまだ勉強中です。 Excelシート上の折れ線グラフの線をマクロから削除したいのですが、どうしてもできません。 前提として6本線の折れ線グラフがあります。 データによってはグラフの線は6本以下のことがあります。 その場合は不要なグラフの線を消したいのです。 そこでグラフを右クリックし、[データソースの選択]ダイアログで削除したい系列を削除して、それをマクロ記録しました。 Sub Macro2() ActiveSheet.ChartObjects("グラフ 146").Activate ActiveChart.FullSeriesCollection(6).Delete End Sub これを参考に下記のマクロを書きました。 Sub d() Dim a As ChartObject Dim b As Chart Set a = ActiveSheet.ChartObjects(1) Set b = a.Chart b.FullSeriesCollection(6).Delete End Sub ところが最後の行で「実行時エラー1004 パラメータが無効です」になって異常終了してしまいます。 デバッガを使って調べると b.FullSeriesCollection.Countが3になており、 b.FullSeriesCollection(3).Deleteつまり三つ目の系列なら削除することができます。 しかし最大6個の系列のうち、後ろの方から削除したいのでこれでは困ってしまいます。 どうしたらいいでしょうか。 なぜ系列は6個なのに3個にされてしまうのでしょうか。 ちょっと引っかかるのが[データソースの選択]ダイアログで「データ範囲が複雑すぎるため表示できません」と言われることです。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

#2です。 複雑そうで、回答はあきらめるべきかと思うが、最後に。 Excelで散布図と回帰直線(多分これと思うが、手作業で作成者がグラフ作成後に、見繕った直線を入れることもできなくはない)を作成したのかどうか、質問者が再試行してみて、突き止められませんか。 グラフのもとになった、数値データそのものは質問者には見えているのですか?。 見た目の直線数は何本ですか?3系列で3本ですか。 ーーー http://hs-www.hyogo-dai.ac.jp/~kawano/HStat/?2011%2F6th%2FExcel2 などを見て。 そして系列番号を割り出せませんか。 「b.FullSeriesCollection.Countが3になており」なら、3つしかないのかもしれないが。 もし割り出せるようなら、私の回答の.SeriesCollection(2).Deleteの()内の数字を、系列番号を適当にセットすれば、その系列の分の線は、消えると思いますが。 ーー あるいはもっと複雑なのかな。

meglin888
質問者

お礼

二度目の回答ありがとうございます。 >Excelで散布図と回帰直線 散布図は「直線付き」です。 この直線がimogashiさんのおっしゃる回帰直線のことでしょうか。 >グラフのもとになった、数値データそのものは質問者には見えているのですか 見えています。 そこにマクロで計算した値を貼り付けるのが今の私の主な仕事です。 >見た目の直線数は何本ですか?3系列で3本ですか。 6本6系列です。 データによっては線が2~6本となるのでいらない線を消したいのです。 6系列なのでb.FullSeriesCollection.Countは6になるはすなのに3と表示されます。 そして1~3の系列は普通に削除できます。 ------------------------------------------------------------------- ちなみに手動でグラフを選択状態にしておいて下記のマクロを動かすと正常に削除されます。 ActiveChart.FullSeriesCollection(6).Delete ところがマクロでグラフを選択状態にしようとして ActiveSheet.ChartObjects(1).Activate ActiveChart.FullSeriesCollection(6).Delete とするとエラーになります。 このときActiveChart.FullSeriesCollection.countは3になっています。 (6のはずなのに)。 手動でグラフを選択状態にするのとマクロでActiveSheet.ChartObjects(1).Activateとするのは違うのでしょうか。 グラフの数が多いので全部マクロで処理したいのですが。

meglin888
質問者

補足

最悪2本線~6本線の5種類のグラフを作っておいてデータによって貼り付けるグラフを選択するしかないのかと考え中です。できればグラフは一種類でマクロで制御できればいいのですが。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

マクロの記録を取って勉強すればわかることではないか。 2013でやってみた。 私の例データ A1:D4 1月 2月 3月 a 12 23 20 b 15 12 19 c 9 13 8 折れ線グラフ作成 Sub Macro1() ' Macro1 Macro ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$D$4") End Sub 第2系列のグラフ削除 Sub test02() With ActiveSheet.ChartObjects(1).Chart .SeriesCollection(2).Delete End With End Sub 結果 b 15 12 19 のデータの折れ線グラフが消えた。 ーー >Fullseriescollectionは2003時代VBAではなかったように記憶する(不確かですが) この意味(Fullがついているもの)を勉強されてはどうでしょう。

meglin888
質問者

お礼

回答ありがとうございます。 教えていただいた方法で折れ線グラフの線を削除することができました。 ためしに線を6本に増やしてみても正常に動きました。 しかし私の抱えている問題の解決にはなりませんでした。 結果として後出しになりますが、今回のグラフは正確には折れ線でないことがつい先ほどわかりました。 (言い訳のようですが、グラフを作った人は私でなく別の人です)。 このグラフは「ユーザー設定の組み合わせ」で「散布図と直線マーカー」でできています。 一見縦方向の折れ線グラフに見えるので、折れ線グラフだと信じていました。 道理で「データ範囲が複雑過ぎて」と表示されるわけですよね。 不勉強を恥じております。 こういう複雑なグラフだとマクロからの制御は無理でしょうか。

  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.1

単純に「アクティブになってるグラフが違ってる」に1票。 マクロ記録では、グラフをアクティブにしてから記録しますが、マクロの 実行状態では、問題のグラフが選択されているとは限りません。 具体的に、問題のグラフに名前を付けておいて、グラフ名を指定して 処理する・・・などの手段が必要だと思います。

meglin888
質問者

お礼

回答ありがとうございます。 b.FullSeriesCollection(3).Deleteつまり三つ目の系列なら削除することができますから、アクティブになっていないということではないようです。

関連するQ&A

  • エクセル マクロ 既存グラフの削除

    また 質問させていただきます。 左側に表全体を範囲指定した折れ線グラフを、マクロを実行して貼り付けており 右側に表の一部を範囲指定した折れ線グラフを、マクロを実行して貼り付けます。 右の表の範囲を変更して、右の表だけを変更するマクロ作成したいと思っています。 左側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="全体グラフ" 右側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="グラフ1" 右側の折れ線グラフ(グラフ1)を削除して、範囲を変更した新たなグラフ(グラフ1に名前を変更)を貼り付けるマクロを作りましたが、右側のグラフが貼りついていない、最初のときに実行すると、削除するグラフが無いためにエラーがでてしまいます。 If を使用するのかなっと思っていますが、どのように入力すればいいのか分かりません。 教えて頂けないでしょうか。

  • グラフの削除をExcelVBAで行う

    こんばんは。同じシートの中にグラフを3つ作成し、 コマンドボタンを押すとグラフを削除し、新しいグラフを作成するようにしたいのですが、グラフの3つ目を削除のしようとするとエラーが発生してしまいます。 2つ目までは順調に消えるのですが、3つ目のグラフが削除されないのはなぜなのでしょうか。 色々教えていただき何とか形になってきたのですが、確認すると色々とぼろがでてきてしまい、困っています。 どなたか教えていただけないでしょうか。 宜しくお願い致します。 Sub Glafu() Dim chartobj As ChartObject Worksheets("ABC").Activate ActiveSheet.ChartObjects(1).Delete ActiveSheet.ChartObjects(2).Delete ActiveSheet.ChartObjects(3).Delete Set chartobj = Worksheets("ABC").ChartObjects.Add(600, 0, 300, 200) chartobj.Chart.SetSourceData Worksheets("ABC").Range(Range("b2").End(xlDown), ActiveCell.End(xlToRight)) With Worksheets("ABC").ChartObjects(1).Chart .HasTitle = True .charttaitle.Text = "タイトル1" End With Set chartobj = Worksheets("ABC").ChartObjects.Add(600, 200, 300, 200) chartobj.Chart.SetSourceData Worksheets("ABC").Range(Range("e2").End(xlDown), ActiveCell.End(xlToRight)) With Worksheets("ABC").ChartObjects(1).Chart .HasTitle = True .charttaitle.Text = "タイトル2" End With Set chartobj = Worksheets("ABC").ChartObjects.Add(600, 400, 300, 200) chartobj.Chart.SetSourceData Worksheets("ABC").Range(Range("h2").End(xlDown), ActiveCell.End(xlToRight)) With Worksheets("ABC").ChartObjects(1).Chart .HasTitle = True .charttaitle.Text = "タイトル3" End With End Sub

  • エクセルのグラフをマクロで縮小化したい

    office2007。Vistaを使用。 エクセルのグラフを縮小するマクロを記録ボタンで作成しました。画面上は縮小されるのですが、「マクロの記録」ではそれが記録されません。office2003で作成したときは zoom を使用したような気がしますが、2007ではどうしたらよいのでしょうか?お教えください。A1B5 にデータが入っています。 Sub Macro1() ' Macro1 Macro Range("B2").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("'Sheet1'!$A$1:$B$5") ActiveChart.ChartType = xlColumnClustered ActiveChart.Location Where:=xlLocationAsNewSheet ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate Sheets("Sheet1").Select Range("A1").Select End Sub

  • エクセルで折れ線グラフにしたいのですが線が出ません

    エクセルのグラフ作成にて下記のようなデータを折れ線グラフで作成したいのですが、どうしても折れ線にならずに数値のところが点で表記されるだけなのです。どうしたらいいかわかりません。 お教えください。    A   B   C   D   E   F (1)  20      40         30 (2)     10      5       8 上記のように A列には(1)の数字のみ。B列には(2)の数字のみといった形です。 もちろん(1)も(2)も入る列はあるのですが・・・。 (1)の折れ線グラフはA-C-F (2)は       B-D-F と数値の入っているところを線で結びたいのです。  普通にやってみるとどうしても線になりません。 教えてください!!

  • Excelマクロによるグラフの消去方法

    Excelマクロ初心者です。 マクロで、グラフを消去する操作をさせたいのですが、どのグラフを消去するかというグラフの指定をどうしたら良いか悩んでいます。 単純に記録マクロでやってみると、以下のようになりました。「グラフ1」といったグラフの名前が分かっていればこれをそのまま応用すればいいのですが、グラフの名前が不明の場合にはどうしたらよいのでしょうか。マクロの中で、グラフの位置などから、グラフの名前を取得するといったようなことなどできるのでしょうかね。どういった方法でも結構ですので、よろしくお願いいたします。 Sub Macro1() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select ActiveWindow.Visible = False Selection.Delete End Sub

  • EXCEL折れ線グラフの線を一気に消したい

    EXCEL2003で折れ線グラフを作成しました。 グラフ上に折れ線が22本(系列が22)あります。 データ系列の書式設定で「線」を「なし」、「マーカー」を「●」にしたいです。 系列を1つ1つ選択して変更するのではなく、一気に変更する方法はありませんでしょうか?

  • エクセル表で折れ線グラフがつながらない

    エクセルで時系列データ(日別データ)を入力して、折れ線グラフ化すると、データがブランクの日、例えば土日など、データが発生しない日は折れ線グラフの線が途切れてしまいます。 折れ線グラフが途切れると、日々の経過がわかりにくく、見づらいのですが、 データがブランク日をスキップして、折れ線をつなげる方法があれば、教えていただけないでしょうか。 よろしくお願いします。

  • エクセル2003 折れ線グラフの表示について教えて下さい!

    エクセル2003で、縦棒グラフと折れ線グラフの複合グラフを作成しています。 折れ線グラフで、マーカーのみが表示され、線が表示されません。 データ系列の書式設定の中の「パターン」で、線の項目で指定しても表示されない状態です。 棒グラフが2本、折れ線グラフ4本を作成したいのですが、何か問題があるのでしょうか。

  • Excelマクロによるグラフ作成時の元データの取得について

     Excelマクロでグラフを作成したいのですが、以下(1)のように書いたら、Grp1.Chart.SetSourceData・・・のところでエラーになってしまいました。そこで、Rangeのところを(2)の様に変更したら、うまくいきました。ただ、自分としては、(1)のようにRangeの中にCellsを使う書き方でやりたいのですが、そのようにはできないでしょうか。  なお、マクロ初心者なので、簡単な表現でお願いします。 (1) Sub グラフ挿入_Macro() Set Grp1 = Sheets("グラフ1").ChartObjects.Add(10, 10, 500, 200) Grp1.Chart.SetSourceData _ Source:=Sheets("データ").Range(Cells(3, 1), Cells(10, 2)), _ PlotBy:=xlColumns End Sub (2) Sub グラフ挿入_Macro() Set Grp1 = Sheets("グラフ1").ChartObjects.Add(10, 10, 500, 200) Grp1.Chart.SetSourceData _ Source:=Sheets("データ").Range("A3:B10"), _ PlotBy:=xlColumns End Sub

  • エクセル マクロ ファイルを開きグラフ作成

    VBAを使用して、エクセルファイルをユーダで選択し読み込み 読み込んだエクセルデータからグラフを作成したいと考えています。 コマンドボタンに下記の通り入力しファイルを読み込みました。 Sub ファイルを開いてセルに表示() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") If OpenFileName <> "False" Then Filename = Dir(OpenFileName) ActiveSheet.Cells(1, 7) = Filename Else MsgBox "キャンセルされました" End If End Sub 読み込んだエクセルファイル、Sheet1をデータとして下記の マクロを実行してグラフを作成したいのですが、どのように手直しを 行ったらよいのか分からないので教えて頂けないでしょうか。 Sub グラフを作成し別シートに貼り付け() '可変範囲折れ線グラフを作成 Dim hani As String shname = ActiveSheet.Name 'シート名を記憶 rmax = Range("A2").End(xlDown).Row '最終行 hani = "C1:C" & rmax & ",E1:E" & rmax Range(hani).Select Charts.Add ActiveChart.ChartType = xlLine ActiveChart.Location Where:=xlLocationAsObject, Name:=shname ActiveChart.SeriesCollection(1).XValues = "='" & shname & "'!R2C1:R" & rmax & "C1" '折れ線グラフを切り取り貼り付け ActiveChart.Parent.Cut Worksheets.Add(after:=Worksheets(Worksheets.Count)) _ .Name = Format(Now(), "グラフ1") ActiveSheet.Paste With Range("A1:F16") ActiveSheet.ChartObjects("グラフ 1").Width = .Width ActiveSheet.ChartObjects("グラフ 1").Height = .Height End With ActiveSheet.ChartObjects(1).Name = "全体グラフ" End Sub

専門家に質問してみよう