Excel VBA質問箱 IV

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

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


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

【35025】グラフのY軸スケール範囲の設定 ぷーちゃん 06/2/19(日) 13:27 質問[未読]
【35026】Re:グラフのY軸スケール範囲の設定 Kein 06/2/19(日) 14:03 発言[未読]
【35030】Re:グラフのY軸スケール範囲の設定 ぷーちゃん 06/2/19(日) 16:37 発言[未読]
【35031】Re:グラフのY軸スケール範囲の設定 Kein 06/2/19(日) 17:00 回答[未読]
【35037】Re:グラフのY軸スケール範囲の設定 ぷーちゃん 06/2/19(日) 20:13 お礼[未読]

【35025】グラフのY軸スケール範囲の設定
質問  ぷーちゃん  - 06/2/19(日) 13:27 -

引用なし
パスワード
   グラフのY軸のスケール範囲をY軸データの最小値を基にした切のいい数値と最大値を基にしたきりのいい数値で自動設定する方法を教えて下さい。

例えば、下記のような手順で行いたいのですが・・・
1)    対象となるグラフをアクティブにする。 (仮に対象をグラフ100とする)
2) そのグラフのY軸の最大値と最小値を見つける。
(Y軸データの列は3つあり、マイナスの値はなく、また、最小値および最大値が1桁以下と8桁以上のデータはない)
3) 最小値を切のいい数値にする。
    ・最小値が2桁の場合、決定最小値は、1の位以下を切り捨てた値とする。
     (例えば、36.5なら30、 48.2なら40)
    ・最小値が3桁の場合、決定最小値は、1の位以下を切り捨てた値とする。
     (例えば、236.5なら230、 148.2なら140)
    ・最小値が4桁の場合、決定最小値は、2の位以下を切り捨てた値とする。
     (例えば、5136.5なら5100、 1448.2なら1400)
    ・最小値が5桁の場合、決定最小値は、3の位以下を切り捨てた値とする。
     (例えば、65536.5なら65000→64000、 62448.2なら62000)
    ・最小値が6桁の場合、決定最小値は、4の位以下を切り捨てた値とする。
     (例えば、375536.5なら370000、 862448.2なら860000)
    ・最小値が7桁の場合、決定最小値は、5の位以下を切り捨てた値とする。
     (例えば、7375536.5なら7300000、 5862448.2なら5800000)
3) 最大値を切のいい数値にする。
    ・最大値が2桁の場合、決定最大値は、1の位以下を切り上げた値とする。
     (例えば、42.5なら50、 31.2なら40)
    ・最大値が3桁の場合、決定最大値は、1の位以下を切り上げた値とし、
     (例えば、266.5なら270、 138.2なら140)
    ・最大値が4桁の場合、決定最大値は、2の位以下を切り上げた値とする。
     (例えば、5636.5なら5700、 1518.2なら1600)
    ・最大値が5桁の場合、決定最大値は、3の位以下を切り上げた値とする。
     (例えば、66536.5なら67000、 63448.2なら64000)
    ・最大値が6桁の場合、決定最大値は、4の位以下を切り上げた値とする。
     (例えば、385536.5なら390000、 812448.2なら820000)
    ・最小値が7桁の場合、決定最大値は、5の位以下を切り上げた値とする。
     (例えば、7675536.5なら7700000、 5362448.2なら5400000)
4) 3),4)で決定した最大値と最小値をそのグラフのY軸書式設定に入力する。 
   この時、目盛間隔、補助目盛間隔、X/項目軸との交点は、自動に設定する。
5) 次のグラフをアクティブのし上記を繰返す。


以上です。  どなたか解る方、よろしくお願い致します。

【35026】Re:グラフのY軸スケール範囲の設定
発言  Kein  - 06/2/19(日) 14:03 -

引用なし
パスワード
   細々と条件を書かれてますが、こーいう処理の定石と言ってもよいやり方は、
Ceiling関数とFloor関数(どちらもワークシート関数です)を使って、上限と下限を
キリのよい任意の単位に丸めてしまう。という方法です。
まず、以下のサイトでの私のレスを参考にしてみて下さい。
http://park7.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200405/04050019.txt

【35030】Re:グラフのY軸スケール範囲の設定
発言  ぷーちゃん  - 06/2/19(日) 16:37 -

引用なし
パスワード
   ▼Kein さん:
>細々と条件を書かれてますが、こーいう処理の定石と言ってもよいやり方は、
>Ceiling関数とFloor関数(どちらもワークシート関数です)を使って、上限と下限を
>キリのよい任意の単位に丸めてしまう。という方法です。
>まず、以下のサイトでの私のレスを参考にしてみて下さい。
>http://park7.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200405/04050019.txt


アドバイス、ありがとうございます。
ただ、私の場合は、対象となるグラフがすでにあって、そのデータの範囲が1日毎に変わるので、対象となる作成されたグラフから、データ範囲を割出し、Y軸の最大値と最小値を求めたいのです。
(対象となるグラフの下のセルにも、他のグラフのデータがあるので、データ範囲を最終行までとすることもできません。)

【35031】Re:グラフのY軸スケール範囲の設定
回答  Kein  - 06/2/19(日) 17:00 -

引用なし
パスワード
   既存のグラフを対象にするなら、そのように改造すればいいのです。
例えば

Sub MyChart_Set_Axis()
  Dim MyCh As ChartObject
  Dim MySe As Series
  Dim MxP As Single, MiP As Single
 
  Set MyCh = ActiveSheet.ChartObjects(1)
  Set MySe = MyCh.Chart.SeriesCollection(1)
  With WorksheetFunction
   MxP = .Ceiling(.Max(MySe.Values), 0.05)
   MiP = .Floor(.Min(MySe.Values), 0.05)
  End With
  With MyCh.Chart.Axes(xlValue)
   .MajorUnit = 0.05
   .MinimumScale = MiP
   .MaximumScale = MxP
  End With
  Set MySe = Nothing: Set MyCh = Nothing
End Sub

後はこれの応用です。

【35037】Re:グラフのY軸スケール範囲の設定
お礼  ぷーちゃん  - 06/2/19(日) 20:13 -

引用なし
パスワード
   ▼Kein さん:
>既存のグラフを対象にするなら、そのように改造すればいいのです。
>例えば
>
>Sub MyChart_Set_Axis()
>  Dim MyCh As ChartObject
>  Dim MySe As Series
>  Dim MxP As Single, MiP As Single
> 
>  Set MyCh = ActiveSheet.ChartObjects(1)
>  Set MySe = MyCh.Chart.SeriesCollection(1)
>  With WorksheetFunction
>   MxP = .Ceiling(.Max(MySe.Values), 0.05)
>   MiP = .Floor(.Min(MySe.Values), 0.05)
>  End With
>  With MyCh.Chart.Axes(xlValue)
>   .MajorUnit = 0.05
>   .MinimumScale = MiP
>   .MaximumScale = MxP
>  End With
>  Set MySe = Nothing: Set MyCh = Nothing
>End Sub
>
>後はこれの応用です。


できました! Keinさんには、前回も教えて頂き、感謝しております。
本当に有難うございました。

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