• ベストアンサー

Excel 2007で複合グラフ(折線グラフ)の重なりと凡例の順序変更について

Excel 2007で折線グラフを作成しています。 データは、A列・B列・C列の3つの時系列で、C列は第2軸に表示しています。 A列→B列→C列で凡例を表示し、かつ、重なり順序を手前からA列→B列→C列の順番に表示させるにはどうしたら良いでしょうか? お分かりになる方いらっしゃいましたらご伝授ください。 何卒よろしくお願い申し上げます。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

失礼しました。 下記コードを消し忘れていました。 ActiveSheet.ChartObjects(19).Activate を削除してください。 あるいは グラフがひとつだけなら、ChartObjectsのインデックスを 1 に変えてみてください。 ActiveSheet.ChartObjects(1).Activate 因みに、グラフを選択しなくてもVBAで処理することが出来ます。

ey_wing
質問者

お礼

xls88様 ご回答のほど、ありがとうございます。 お教えいただいたVBAで無事解決することができました。 またの機会がありましたらその際もよろしくお願いします。 ありがとうございました。

その他の回答 (2)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

マクロを実行する前に、グラフをクリックして選択していますか? エラーメッセージが表示されたら、「デバッグ」ボタンがあると思います。 クリックすれば、VBEのコードウインドウで、エラー発生個所が黄色く反転表示されます。 その場所を教えてください。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

普通には無理だと思います。 とりあえずマクロを組んでみました。 まだ不完全です。 該当グラフを選択しておいてマクロを実行してみてください。 Sub test1() Dim srs As Series Dim max1 As Variant Dim max2 As Variant Dim myval As Variant Dim dd As Variant Dim n As Integer Dim i As Integer Dim j As Integer ActiveSheet.ChartObjects(19).Activate With ActiveChart .HasLegend = False .HasLegend = True n = .SeriesCollection.Count + 1 max1 = .Axes(xlValue, xlPrimary).MaximumScale max2 = .Axes(xlValue, xlSecondary).MaximumScale myval = .SeriesCollection(n - 1).Values End With j = n '//ダミーデータ For i = 1 To UBound(myval) dd = dd & "," & myval(i) * max1 / max2 Next i dd = Replace(dd, ",", "", 1, 1) For i = n To 2 Step -1 Set srs = ActiveChart.SeriesCollection(i - 1) With ActiveChart.SeriesCollection.NewSeries .Formula = srs.Formula .name = "New" & j .MarkerStyle = srs.MarkerStyle '自動設定になる .Border.Color = srs.Border.Color .MarkerBackgroundColor = srs.Border.Color .MarkerForegroundColor = srs.Border.Color .PlotOrder = ActiveChart.SeriesCollection.Count - 1 If i = n Then '.Values = Sheets("グラフ").Range("R24:W24") .Values = "{" & dd & "}" .name = srs.name With srs .name = "" .MarkerStyle = xlNone .Border.ColorIndex = xlNone .MarkerBackgroundColorIndex = xlNone .MarkerForegroundColorIndex = xlNone End With End If j = j + 1 End With ActiveChart.Legend.LegendEntries(n).Delete Next End Sub

ey_wing
質問者

お礼

xls88様 早々のご回答のほど、ありがとうございます。 記載されたマクロを実行してみたのですがエラーとなります。 エラー内容は、 「実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです。」 です。 どうしたらよいでしょうか?

関連するQ&A