[[20200211181702]] 『指定した範囲をグラフで表示させるマクロ』(ドギー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定した範囲をグラフで表示させるマクロ』(ドギー)

E4から右横に数字が入っています。

このE4から横に入っている数字をグラフにしたいのですが、グラフの始まりと終わりをB4セルとC4セルの数字で限定します。

B4に入っている数字は始まりを決める数字が入っていて、例えばここに2という数字が入っていればE4から右に2番目のF4からということになります。

C4に入っている数字は終わりを決める数字が入っていて、例えばここに10という数字が入っていればE4から右に10番目のN4までということになります。

この例でいえば、F4からN10までの数字がグラフに表示されることになります。

グラフの種類は折れ線グラフです。

エクセルは最新のバージョンです。

教えてください。 よろしくお願いします。

< 使用 Excel:Office365、使用 OS:Windows10 >


マクロの記録をしてみましたか?
してなければ、マクロの記録をしてコードを探るところから始めてみてください。
サンプルを書くとしても、
回答側の人も多分マクロの記録から始めると思います。

あと、数字を入力してデータ数を決める仕様のようですが、
データがある分だけのセル範囲を特定できればいいのでは?
そうすれば、データ数を入力する必要が無くなるのですが。。。
意図してそうしてるなら問題はないです。
(まっつわん) 2020/02/11(火) 18:35


まっつわんさん アドバイスありがとうございました。

マクロの記録をしましたらこうなりました。

    Range("F4:N4").Select
    ActiveSheet.Shapes.AddChart2(227, xlLine).Select
    ActiveChart.SetSourceData Source:=Range("Sheet1!$F$4:$N$4")
End Sub

("F4:N4")の所を指定してグラフを作っただけのものです。

計算式でグラフにしたい数字を抽出することはできるのですが、時間の経過とともにベースになるセルの範囲が増減しますし、一番の問題はグラフの範囲もその都度増減しますので、もしそれがマクロで出来るのであれば教えていただけたらと思いまして質問させていただきました。

よろしくお願いします。

(ドギー) 2020/02/11(火) 19:11


マクロの記録で、
データの範囲を変えるのは、
SetSourceDataというもので、
Source:=Range("Sheet1!$F$4:$N$4")
を指定すればいいとわかるので、

それのヘルプを見ます。
〜〜〜〜ヘルプより抜粋〜〜〜〜〜
Excel 開発者用リファレンス
Chart.SetSourceData メソッド
グラフの元データとなる範囲を指定します。
構文

式.SetSourceData(Source, PlotBy)

式 Chart オブジェクトを表す変数です。

パラメーター

名前 必須/オプション データ型 説明
Source 必須 Range 元データを含むセル範囲を指定します。
PlotBy オプション バリアント型 (Variant) データをプロットする方法を指定します。使用できる定数は、XlRowCol クラスの xlColumns または xlRows です。
〜〜〜〜抜粋終わり〜〜〜〜

意味解んなかったら、Webで解説サイトを探します。

「VBA グラフ セル範囲の更新」

で、検索したら、
https://tonari-it.com/excel-vba-chart-setsourcedata/
https://officedic.com/excel-vba-chartdata-set/
とかが見つかるので、それを参考に書いていきます。
セル範囲の取得の方法も解らなければ、
Web上に解説ページがあります。

Sub test()

    Worksheets("Sheet1").ChartObjects(1).Chart.SetSourceData Source:=Worksheets("Sheet1").Range("F4", Worksheets("Sheet1").Range("F4").End(xlToRight))
End Sub

マクロの記録は完璧ではないので、ちょっと応用するには難しいかもですね。
どのシートのどのグラフオブジェクトの(サンプルは面倒だったので番号で指定。名前でも可)、
グラフ(英語ではChart)の元データの設定 データ元:=セル範囲

みたいに書かないとダメっぽいですね^^;
まぁ、こんな感じで調べてマクロを作ります。

(まっつわん) 2020/02/11(火) 19:59


まっつわんさん ご丁寧にありがとうございます。

ちょっとやってみますね。

(ドギー) 2020/02/11(火) 20:42


別案(マクロ不要)

系列のデータ範囲を名前定義してはどうですか。
=OFFSET(Sheet1!$D$4,0,Sheet1!$B$4,1,Sheet1!C$4-Sheet1!$B$4+1)

こここを参考に考えてみてください
http://officetanaka.net/excel/function/tips/tips71.htm

(マナ) 2020/02/11(火) 20:47


マナさん ありがとうございます。

(ドギー) 2020/02/13(木) 10:15


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.