• ベストアンサー

excel2010 VBA グラフの目盛の変更

EXCEL2010のVBAでグラフを作成するコードを作成しております。 コードを実行すると入力シートの値を読み込み、別シートにグラフを複数作成します。 入力シートは最初はデータが入っておらず後から入力します。入力されたデータが反映されて グラフに値が表示されるのですが、目盛は0~値の最高値の少し上くらいまでが表示されます。 これを値が入力シートに入力されてグラフに反映されたら、目盛を表示された値の周辺のみに自動で変更したいのですが何か方法はないでしょうか? (例) データの最小値380       最大値400 目盛を370~410くらいにする

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

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

今日はお休みですか? 見栄えが良くなるように条件を加味してみました。 Dim chtObj As ChartObject Dim ser As Series Dim mind As Double Dim maxd As Double Dim minv As Double Dim maxv As Double Dim n As Integer Set chtObj = ActiveSheet.ChartObjects(1) With chtObj.Chart For Each ser In .SeriesCollection If mind = 0 Or maxd = 0 Then mind = WorksheetFunction.min(ser.values) maxd = WorksheetFunction.max(ser.values) Else If mind > WorksheetFunction.min(ser.values) Then mind = WorksheetFunction.min(ser.values) End If If maxd < WorksheetFunction.max(ser.values) Then maxd = WorksheetFunction.max(ser.values) End If End If Next minv = WorksheetFunction.RoundDown(mind, -1) maxv = WorksheetFunction.RoundUp(maxd, -1) With .Axes(xlValue) n = Int((maxv - minv) / .MajorUnit) If minv < maxv - .MajorUnit * n Then minv = maxv - .MajorUnit * (n + 1) End If .MinimumScale = minv .MaximumScale = maxv If mind < .MinimumScale + .MajorUnit * 3 / 5 Then .MinimumScale = .MinimumScale - .MajorUnit End If End With End With

Not_Pro
質問者

お礼

回答ありがとうございます。 細かい部分まで助かります。

Not_Pro
質問者

補足

初心者の私には難しいのでひとつ前の回答ので動くのであればひとつ前ので動かそうかと思います。

その他の回答 (2)

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

まだ不十分ですがこんな感じになると思います。 対象グラフの選定、系列が複数の場合、MajorUnitとの整合性、等々 考慮すべき事が他にもあります。 ワークシートイベントで起動すれば良いと思います。 Dim chtObj As ChartObject Dim vals As Variant Dim minv As Double Dim maxv As Double Set chtObj = ActiveSheet.ChartObjects(1) With chtObj.Chart With .SeriesCollection(1) vals = .values minv = WorksheetFunction.min(vals) minv = WorksheetFunction.RoundDown(minv, -1) maxv = WorksheetFunction.max(vals) maxv = WorksheetFunction.RoundUp(maxv, -1) End With With .Axes(xlValue) .MinimumScale = minv .MaximumScale = maxv End With End With

Not_Pro
質問者

補足

できればどの部分がどのような動きになるのか大まかでよいので教えていただけると助かります。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

Excel2010ではマクロの記録がとれますので、それをもとに下記のように書けます。 実際のシートやグラフに合わせて修正してください。 With Sheets(1).ChartObjects("グラフ 1").Chart .Axes(xlValue).MinimumScale = 370 .Axes(xlValue).MaximumScale = 410 End With

Not_Pro
質問者

お礼

回答ありがとうございます。さっそく見てみます。

関連するQ&A

  • EXCEL2010 VBA グラフの作成

    EXCEL2010のVBAで自動でグラフを作成するコードを作成したいと思っています。 シート1のA1:A10にデータが入っていて、ボタンを押すとコードが実行されて A1:A5までが系列1 A6:A10までが系列2 として表示される折れ線グラフを作成しようと思っています。 さらに作成したグラフは新規にシートを作成して作成したシートに表示させたいと思います。 このような処理を行いたいのですがVBAを始めたばかりなのでグラフの作成くらいしかまだ 分かっていません。 どなたかこの処理を実現できる良い方法を教えてください。よろしくお願いします。

  • エクセル グラフの目盛表示を変更するには?

    エクセル2003です。 負の値のある棒グラフを作成しております。 例えば値の範囲が-245から795まであった場合、Y軸の最小値を-250、最大値を800に設定して、目盛り間隔を100とすると、グラフ上の目盛りは-250、-150、-50、50、......750となってしまいます。 つまり最小値を基準にしてしまいます。 これを最小値はそのままに-250にして、目盛の割付を0を基準にできないでしょうか?つまり、目盛りは-200、-100、0、100、.....800といった具合にすることは可能でしょうか。

  • Excel2010の目盛について

    excel2010で、折れ線グラフを用いて両軸に対数を取ったグラフを書きたいのですが、最大値が1、最小値が0.0001といったようなグラフで横軸の目盛りを最小値0.0001のところに取りたいのですがどのようにしたらよいですか? ちなみに全体的に補助線等をいれる方法はグラフが見づらいためできません。また、目盛りラベルは下端/左端で変更できました。 質問に慣れておらず拙い文章ですいません。よろしくお願いします。

  • Excel縦棒グラフで、最小値が-10の場合、Y軸目盛り間隔を0を含め

    Excel縦棒グラフで、最小値が-10の場合、Y軸目盛り間隔を0を含めて100の倍数で表示する方法は? 複数の数値の内1つだけマイナス値、 しかも桁数が2桁以上違うデータを棒グラフにしようとしていますが、 Y軸の目盛り間隔が上手く作れません。 例として 650 420 -5 という数値を縦棒グラフにしたいのですが、 これのY数値軸設定を 最小値-10、最大値700、目盛り間隔100に設定すると Y軸の目盛りが下から -10、90、190、290・・・ と表示されます。 これを -10、0、100、200、300・・・ と表示させたいのです。 最小値を-100にしてしまえば0以上の値は100の倍数で綺麗に表示できますが 最小値が2桁違うので、出来れば目盛りの下限は-10位までにしたいのです。 なにか良い方法があれば是非ご教授下さい。 (ちなみに当方のExcelバージョンは非常に古い97ですので、 バージョンのせいで希望通りの解決方法がない場合は諦めます・・・)

  • EXCEL2010 VBA 複数の条件のグラフ

    EXCEL2010のVBAでグラフを作成するコードを作成しています。 そのグラフでは指定した値で系列の数が変わります。 初期設定シートで指定値1と2を確認して指定値1が系列の数、指定値2がデータ範囲となります。 データ範囲はB列のB1から指定値2の数だけ下に増えます。 Sheet1にグラフを新規作成します。 (例) 指定値(A1):1の時 指定値(A2):20 グラフに表示される系列:(B1:B20) (例2) 指定値(A1):2の時 指定値(A2):20 グラフに表示される系列:(B1:B20)と(B21:B40) 説明が分かり辛いかもしれませんがよろしくお願いします。

  • Excelグラフ目盛線の開始値の変更方法

    Excelのグラフにおいて目盛線は軸の最小値より補助間隔に合わせるようになっています。 この目盛線を軸の最小値とは関係なく別の開始値を持って設定することは可能でしょうか? 例:軸の最小値を2として目盛線を10,20,30の間隔で引く やりたいことは対数目盛表示でデータの最小値は3から使用して、目盛線を10,100,1000と引いてそれに合わせた補助目盛線を書きたいと思っています。 軸の最小値を3とした時点で目盛線が3,30,300となってしまいます。 補助目盛線の間隔が3から4にかけてが最大となる幅のグラフが見づらいため変更したいです。 よろしくお願いします。

  • Excel2003 グラフ(横軸)の目盛ラベルについて

    Excel2003のグラフについて教えて下さい。 要素数が300個あるデータを用い、折れ線グラフを作成します。 そこで、横軸の目盛ラベルに以下の値を設定したく思っています。 (1) 目盛1(左辺):30 (2) 目盛2:25 (3) 目盛3:20 (4) 目盛4:15 (5) 目盛5:10 (6) 目盛6:5 (7) 目盛7(右辺):0 試しに軸の書式設定で「目盛ラベルの間隔:50(目盛の間隔:50)」と設定を行うと目盛ラベルは以下の値となりました。 (a) 目盛1(左辺):1 (b) 目盛2:51 (c) 目盛3:101 (d) 目盛4:151 (e) 目盛5:201 (f) 目盛6:251 (g) 目盛7(右辺):表示なし どなたか、(1)~(7)の様な横軸の目盛ラベルの設定方法をご存知の方、教えて下さい。宜しくお願い致します。

  • Excel 総合グラフ第2縦軸の目盛設定

    Excel2007です。よろしくお願いいたします。 現在総合グラフの勉強中なのですが、第2縦軸の目盛設定について教えてください。 ただいま、画像のようなグラフを作成中です。 主軸は0点~100点の11段階。第2縦軸は上から1位~10位までのグラフです。 目盛を揃えるために、グラフの0地点はなにも表示しないような設定にしいたいのです。 現在の第2縦軸オプション 最小値      1 最大値      11 目盛間隔    自動 補助目盛間隔 自動 となっております。 軸オプションの最大値を11にすると、ぴたりとはまるのですが、 最大値を10にすると主軸目盛とズレてしまいます。 10位までの表示だけにしたいと、参考書片手に四苦八苦しておりますが、 どうしてもわかりませんでした。 どうかよろしくお願いいたします。

  • エクセルのグラフで目盛りを変更したい

    こんにちは。 エクセル2000を使っています。 縦軸の目盛りで、分布が極端な場合 (たとえば最小値0、最大値10000だけど、0~100と8000~10000にデータが偏っている場合)、 よく縦軸を波線で区切ったグラフがありますよね。 あれを作りたいのですが、できるのでしょうか? 教えてください、お願いします。

  • Excelでグラフの目盛線について

     Excelでグラフを書きますよね。棒グラフ、折れ線グラフなんでも良いのですが横、縦軸に目盛りの線がありますよね。それを最大5本までとかって設定できるものですか?  目盛りの間隔を手動で変えて設定することはできるのですが、5本なら5本にしてデータの最大値-最小値を5で割って目盛り間隔を自動で取りたいのです。言ってる本人が良く分からなくなって来ちゃいましたけど、、。金曜までに終わらせないと実家に帰れなくなっちゃうのでどなたか助けて下さーい。

専門家に質問してみよう