過去ログ

                                Page     476
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼グラフのx軸y軸データの順番について  さんい 02/12/20(金) 22:10
   ┗Re:グラフのx軸y軸データの順番について  りん 02/12/23(月) 14:21
      ┗Re:できました!  さんい 02/12/24(火) 2:37

 ───────────────────────────────────────
 ■題名 : グラフのx軸y軸データの順番について
 ■名前 : さんい
 ■日付 : 02/12/20(金) 22:10
 -------------------------------------------------------------------------
   散布図のグラフを作成しようと思いますが、データソースエリアの設定において
X軸とY軸のデータが逆になったりします。どうしたらよいでしょうか?

Dim ChartN As ChartObject
  Dim R3 As Range
   
  Set ChartN = ActiveSheet.ChartObjects.Add(5, 55, 450, 200)
  With Sheets("A")
    Set R3 = Union(.Range(Cells(5, XGraphCh + 1), Cells(32000, XGraphCh + 1)), _
    .Range(Cells(5, YGraphCh + 1), Cells(32000, YGraphCh + 1)))
  End With
  ChartN.Chart.ChartType = xlXYScatterLines

つまり、XGraphCh、YGraphChはスピンボタンで設定できるようになっていて、
XGraphChの値がYGraphChより小さいときは大丈夫ですが、
逆だとX軸のデータとY軸のデータが反対になってしまいます。
勝手にUnion以下のコマンドにおいて先に描いた方が横軸(x軸)になって
後に書いたほうが縦軸(Y軸)になると思って記述すたのですが、
これがまちがいでしょうか?
 ───────────────────────────────────────  ■題名 : Re:グラフのx軸y軸データの順番について  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 02/12/23(月) 14:21  -------------------------------------------------------------------------
   さんい さん、こんにちわ。

>勝手にUnion以下のコマンドにおいて先に描いた方が横軸(x軸)になって
>後に書いたほうが縦軸(Y軸)になると思って記述すたのですが、
>これがまちがいでしょうか?
 列単位指定の場合は範囲の一番左側にある列がX軸になります。

XとYを別々に指定します。
 
Sub Test()
  Application.ScreenUpdating = False
  Dim Co1 As ChartObject
  Dim R1 As Range, R2 As Range
  '動作確認用に変数に数値をあてがってます。
  XGraphCh = 5:  YGraphCh = 1
  '
  With Worksheets("A")
    Set R1 = .Range(.Cells(5, XGraphCh + 1), _
              .Cells(32000, XGraphCh + 1))
    Set R2 = .Range(.Cells(5, YGraphCh + 1), _
              .Cells(32000, YGraphCh + 1))
  End With
  Set co = ActiveSheet.ChartObjects.Add(5, 55, 450, 200)
  '
  With co.Chart
    .ChartType = xlXYScatterLines
    .SeriesCollection.NewSeries
    With .SeriesCollection(1)
     .Values = R2
     .XValues = R1
    End With
  End With
  '
  Set R1 = Nothing: Set R2 = Nothing
  Set co = Nothing
  Application.ScreenUpdating = True
End Sub

 こんな感じです。
 もし5行目がデータではなくタイトル行ならば、データ範囲を6行目からとし、

With .SeriesCollection(1)
  .Values = R2
  .XValues = R1
  .Name = Worksheets("A").Cells(5, YGraphCh + 1) '←これ追加
End With
としてください。
 ───────────────────────────────────────  ■題名 : Re:できました!  ■名前 : さんい  ■日付 : 02/12/24(火) 2:37  -------------------------------------------------------------------------
   りんさん、ありがとうございます。
なかなかレスポンスがつかなかったのであきらめていましたが、
ほんとうにありがとうございます。
りんさんの書かれた通りに入力して確かめましたら、
私の望みどおりのグラフができました。
感激です。
ご多忙中にもかかわらず教えてくださり
ありがとうございました。
お礼を申し上げます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 476