ここでは、理系ではしばしば用いる「散布図」のグラフを VBA で描く方法を 紹介する。 設定できる項目は非常に多くここでは紹介しきれないが、 Excel の「マクロの記録」を用いると必要な機能の VBA 記述がわかるので 試してみて欲しい。 Sub draw_data() Dim N As Long, i As Long Dim x As Double, dx As Double N = 100 x = 0 dx = 3. 14 * 2 / N ' データ作成部 reenUpdating = False For i = 0 To N - 1 (i + 1, 1) = x (i + 1, 2) = Sin(x) (i + 1, 3) = Cos(x) x = x + dx Next i reenUpdating = True ' グラフ削除 If > 0 Then For i = 1 To If artObjects(i) = "datagraph" Then ' "datagraph" という名前を指定して削除 artObjects(i) Exit For End If ' グラフ記入 (200, 20, 240, 200) ' 位置 (200, 20) に 240x200 のサイズのグラフ追加 = "datagraph" ' グラフに名前をつける artType = xlXYScatterLinesNoMarkers ' 散布図のデータポイントなし tSourceData Range(Cells(1, 1), Cells(N, 3)), xlColumns ' 離れた列は Union で Range を作成すれば良い ActiveChart. Location xlLocationAsObject, "Sheet1" ActiveChart. HasTitle = True = "y=sin(x) と y=cos(x) のグラフ" ' グラフタイトル (xlCategory, xlPrimary). HasTitle = True (xlCategory, xlPrimary) = "x" ' x 軸タイトル (xlValue, xlPrimary). HasTitle = True (xlValue, xlPrimary) = "y" ' y 軸タイトル (xlCategory, xlPrimary).
皆さんは散布図という言葉をご存知でしょうか? 散布図は「QC(品質管理)7つ道具」の1つで、2つのデータの関連を調べる際に用いるものです。 初めて聞いたという方も多いと思います。 こちらのコラムでは散布図の見方やExcelを使用した作成方法などを紹介していきます。 今後、データの関連性を調べる際に参考にしていただければと思います。 散布図とは?
(xlValue). HasMinorGridlines = True With. BaselineOffset = 0 = msoTrue = msoThemeColorBackground1 = 0 (xlValue). X軸,Y軸,補助目盛線の書式設定が終わったところ まとめ EXCEL の散布図で複数のデータ系列を追加していく過程をマクロ記録しました.また,グラフの書式設定を変更していく過程もマクロ記録しました. 散布図のデータ系列は FullSeriesCollection() コレクションに格納され,インデックス番号で管理されていることが分かりました.インデックス番号を変数化してループすれば自動で複数のデータ系列を追加できそうなめどが立ちました.
$J$6:$J$9" ActiveChart. FullSeriesCollection(2) = "=DATA! $G$6:$G$9" 「系列の編集」で「系列Xの値」を指定 グラフエリア,プロットエリアの書式設定 「グラフのデザイン」タブで「グラフスタイル」を指定する箇所がありますが,なぜかブルーバックの白ポイントが選択肢に出てこなかったので,手動で設定したマクロ記録を載せます. 散布図の初期状態はあまり見栄えがいいとは言えません.「グラフエリアの書式設定」で「塗りつぶし」を「単色」の「青」,「枠線」を「線なし」とし,「プロットエリアの書式設定」で「塗りつぶし」を「なし」,「枠線」を「単色」の「白」としたところです. With ("グラフ 1"). Visible = msoTrue. ForeColor. ObjectThemeColor = msoThemeColorAccent1. TintAndShade = 0 ightness = 0 End With ("グラフ 1") = msoFalse = msoFalse With. TintAndShade = 0 With. ObjectThemeColor = msoThemeColorBackground1. TintAndShade = 0 ightness = 0. Transparency = 0 散布図の初期状態 グラフエリアとプロットエリアの書式設定 データ系列の書式設定 データ系列の総数は最終的に数百にもなります.そのため,色を替えていては追いつきません.ここでは全てのデータ系列の色を白に揃えます. 操作していて気がついたのですが,データ系列の書式設定の際,複数のデータ系列を同時に選択することはできないようです.一つずつ地道に選択しては操作を繰り返す必要があります. 「データ系列の書式設定」で変更するのは「マーカーのオプション」「塗りつぶし」「枠線」です. 「マーカーのオプション」では「組み込み」でサイズを 1 に変更します. 「塗りつぶし」は「塗りつぶし(単色)」で「色」は「白」に変更します. 「枠線」は「線なし」に変更します. ActiveChart. FullSeriesCollection(1) With Selection. MarkerStyle = 8. MarkerSize = 5 rkerSize = 4 rkerSize = 3 rkerSize = 2 rkerSize = 1 With.
ObjectThemeColor = msoThemeColorAccent2. TintAndShade = 0 ActiveChart. FullSeriesCollection(2) ついでにグラフのサイズも変更します. ("グラフ 1"). ScaleWidth 1. 0666666667, msoFalse, _ msoScaleFromTopLeft ("グラフ 1"). ScaleHeight 1. 7222222222, msoFalse, _ グラフのサイズを変更 軸の書式設定 X 軸の書式設定 X 軸の書式設定で変更するのは「軸のオプション」の「最小値」と「最大値」,「縦軸との交点」の「軸の値」,「表示形式」の「カテゴリ」です. 「軸のオプション」の「最小値」は -0. 2, 「最大値」は 0. 2 と入力します. 「縦軸との交点」の「軸の値」は「軸のオプション」の「最小値」に入力したのと同じ値を入力します. 「表示形式」の「カテゴリ」は「パーセンテージ」を選択します. (xlCategory) (xlCategory). MinimumScale = -0. 2 (xlCategory). MaximumScale = 0. CrossesAt = 0 (xlCategory). CrossesAt = -0. 2 mberFormatLocal = "0%" Y 軸の書式設定 Y 軸の書式設定で変更するのは「対数目盛を表示する」,「境界値」の「最小値」と「最大値」,「表示単位」です. まず「対数目盛を表示する」にチェックを入れます. 次に「境界値」の「最小値」と「最大値」にそれぞれ 100, 1. 0E7 と入力します.「自動」のままにしておくとデータ系列の分布によってはレイアウトが切り替わるため,不都合です. さらに「表示単位」を「万」に変更します. (xlValue) (xlValue). ScaleType = xlLogarithmic (xlValue). MinimumScale = 100 (xlValue). MaximumScale = 1000000 (xlValue). MaximumScale = 10000000 (). DisplayUnit = xlThousands 補助目盛線の追加とフォントの色の変更 Y 軸に補助目盛線を追加します.また,各軸のフォントの色,表示単位ラベルのフォントの色を全て白に変更します.
00") ' 相関係数をセット(.
Count > 0 Then artObjects. Delete End If check 解決した方法 0 ファイルを読み込む際の MyRange のデータ範囲を固定することで、2つ目のマクロの追加テキストがエクセルシートに追加したタイミングでグラフも更新するようになりました。 しかしデータ範囲をあまりに大きくしてしまうと、マクロ自体が重くなるようなので、注意が必要です。 tatsu99様のアドバイスのように一度消して、再描写のほうが早いような気がします。 Set MyRange = Columns(Cells( 1, 2), Cells( 5000, 6)) Source:=MyRange, PlotBy:=xlColumns