Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3864 / 13645 ツリー ←次へ | 前へ→

【59788】グラフの作成について rafu 09/1/8(木) 15:29 質問[未読]
【59796】Re:グラフの作成について n 09/1/8(木) 21:04 発言[未読]

【59788】グラフの作成について
質問  rafu  - 09/1/8(木) 15:29 -

引用なし
パスワード
   現在VBAを用いたシミュレーションを作成しています。

質問ですが、k(0)〜k(7000)の値を折れ線グラフのような形で表示したいのです。セルに入力してからグラフを作成する方法ではデータ数が多すぎてうまくできませんでした。どのようにコードを書けばグラフを作成できるのでしょうか?

ご存知の方いらっしゃいましたらよろしくお願いしますm(__)m

【59796】Re:グラフの作成について
発言  n  - 09/1/8(木) 21:04 -

引用なし
パスワード
   >セルに入力してからグラフを作成する方法ではデータ数が多すぎてうまくできませんでした。
とは?
エラーが出ますか?
それとも、データ数が多くてグラフ曲線ではうまく表現できないという意味ですか?

後者の場合、グラフの利用目的にもよりますが、データを間引いて大まかな表現に留めるとか、
表示範囲を限定して、見たい時にグラフ範囲を変動させる、などの方法が考えられます。
グラフ範囲を可変にするのは一般機能だけでもできますが、作成サンプルとしては以下。

Sub test()
  Const x As Long = 7000 'テスト用データ行数
  Const n As Long = 100 'グラフ表示範囲行数初期値
  Dim r  As Range
  Dim s  As String

  With Sheets.Add
    'テストデータ作成
    .Range("A1:C1").Value = [{"data","x移動","x範囲数"}]
    With .Range("A2").Resize(x)
      .Formula = "=RAND()*" & x
      .Value = .Value
    End With
    'ScrollBar
    For Each r In .Range("B3:C3")
      With .ScrollBars.Add(r.Left, r.Top, r.Width, r.Height)
        .Value = 1
        .Min = 1
        .Max = x
        .SmallChange = 1
        .LargeChange = 10
        .LinkedCell = r.Offset(-1).Address
      End With
    Next
    .Range("C2").Value = n
    '[名前定義]
    .Names.Add "data", "=OFFSET($A$1,$B$2,0,$C$2,)"
    s = .Name
    'グラフ作成
    With .ChartObjects.Add(.Range("D1").Left, 0, 500, 300).Chart
      .HasLegend = False
      .ChartType = xlLine
      .SeriesCollection.NewSeries.Formula = "=SERIES(,," & s & "!data,1)"
      .Axes(xlValue).MaximumScale = x
      .HasAxis(xlCategory) = False
    End With
  End With
End Sub

3864 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free