[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『グラフのY軸の最大値が自動で区切れの良い値になるところ、実際のデータ最大値にしたい』(GG)
お世話になります。
1シートに折れ線グラフを多数(192個)作成していて、
96のデータ行にデータを張り付けて更新しています。
グラフのY軸の最大値はデータの最大値と思っていたところ、
その最大値を繰上した区切りの良い数字が自動的に入っているようです。
全てのグラフを実際の最大値に統一したいところです。
まずはグラフのY軸をダブルクリックして”軸の書式設定”の軸のオプションの
境界値の最大値に手入力して繰り返す方法があると思いますが、
これをデータ行の最大値そのものに自動的に行えないでしょうか。
どうぞご教授ください。
よろしくお願いいたします。
GG
< 使用 Excel:Excel2016、使用 OS:Windows10 >
(マナ) 2021/08/29(日) 09:53
(マナ) 2021/08/29(日) 10:26
データ範囲がB列だった場合に D1 に =CEILING(MAX(B:B),500) などとしておき、
Sub UpdateScale() Dim maxScale maxScale = Range("D1").Value
Dim grObj As ChartObject For Each grObj In ActiveSheet.ChartObjects grObj.Chart.Axes(xlValue).MaximumScale = maxScale Next End Sub
などとしてできないでしょうか。 (QS) 2021/08/29(日) 11:38
横入り失礼します。念のための確認です。
| 全てのグラフを実際の最大値に統一したいところです。 ・各グラフごとの最大値にするということですか? ・それとも、すべてのグラフについて横断的に求めた最大値を使うということですか?
そもそもで恐縮ですが、そうする趣旨は何でしょうか? ・全グラフを統一するなら、水準の絶対比較に使うといった意味もありますが、 ・各グラフの最大値であれば、どんなメリットがありますか?
なお、最大値だけ変更すると、 目盛りの数値表示は、丸めたものでなく、端数を持ったものになります。 例えば、最大値が8.9だと、目盛りは8.9, 7.9, 6.9 ,,,などとなります。 それでよいのですか? もし目盛だけは丸めたものにしたいのであれば、回避策は最小値にも注意を払うことです。
少なくとも、ご自分でマクロ記録は取られたらいかがですか?
ちなみに、グラフの最大値の取得は、こんな感じになるのでしょうか。 Dim m as Double For Each ser In ActiveChart.FullSeriesCollection m = Application.Max(m, Application.Max(ser.Values)) Next
(γ) 2021/08/29(日) 16:13
やはりマクロしか手がなさそうですね。私にVBAを書くほどの技量はなくマクロ記録に少々手を入れて使用している程度です。
96のデータ行の1列分に全データの最大値を入れておき、それを含めたグラフと含めないグラフの2種類作成しており、2倍の192個のグラフになっています。
”含めた”方は96行間での強度の相対値が視覚的に把握でき、
"含めない”方は全データ最大値を除いた1行データ内の最大値に対する各シグナルの相対値を把握できるのですが、この最大値がデフォルトではY軸の最大値で固定できていないので(勝手に区切りの良い数値がY軸最大値に設定される)グラフ毎に若干ぶれて見えるのを修正したいのです。
軸の数値は消しており桁や小数点は気にしていません。
上記VBA例を参考に作成してみたいと思います。
grObj.Chart.Axes(xlValue).MaximumScale = maxScale
がキーと思いますが、X軸の設定は変えずY軸のみD1セルのmaxScaleにし、追加ですがY軸最小値は0に固定したいと思います。
もう少しお付き合いいただけると幸いです。
よろしくお願いいたします。
(GG) 2021/08/30(月) 02:41
こちらの理解力が低いねえ、と思っているかもしれないが、
そもそも最低限のこうしたことは求められなくても、
質問の最初に明示することだと思いますよ。
(γ) 2021/08/30(月) 05:35
>最大値に対する各シグナルの相対値を把握 各データを最大値で割って、最大値に対する相対値のグラフを作ればいいだけなのでは? (´・ω・`) 2021/08/30(月) 07:00
グラフ例は下記横軸用#行と、凡例項目用のA行からE行の5行からなります。
これで折れ線グラフを書いて、Y軸をダブルクリックして軸の書式設定を出すと
下記"軸のオプション"のようなY軸数値が自動で入るのですが、
実際には最小値を0で固定して、最大値は各行の"実際の最大値"を入力したいのです。
マニュアルでコピーペーストする以外に、マクロで行いところです。
Y様の意図を汲んでいるかわかりませんが、データを記載しました。
かなりデータを絞った例ですが、まだ長くてすいません。
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
A 205,871 128,011 152,418 176,175 195,357 205,871 204,776 191,428 167,897 138,357 107,733 80,239 58,415 42,962 33,205 28,258 26,463 26,076 26,570 27,659 29,216 31,757 34,958 38,662 42,819 47,410 52,508 58,312 65,112 73,142 82,363 92,222 101,524 108,539 111,385 108,630 99,859 85,938 68,811 50,895 34,373 22,950 15,259 9,922 6,479 4,388 3,173 2,485 2,095 1,871 1,738
B 245,764 139,757 170,514 201,410 227,501 243,585 245,764 232,816 206,728 172,075 134,551 99,304 69,774 47,340 35,945 30,429 27,051 25,061 23,915 23,280 22,976 22,912 23,039 23,319 23,728 24,258 24,932 25,810 26,979 28,543 30,601 33,232 36,492 40,423 48,519 58,729 71,048 86,107 104,404 125,847 149,321 172,492 192,026 204,238 206,029 195,832 174,250 144,056 109,508 75,175 44,771
C 259,147 169,565 202,370 231,776 252,261 259,147 250,188 226,458 192,080 152,894 114,677 81,694 56,045 37,855 29,764 25,859 23,630 22,427 21,818 21,548 21,474 21,518 21,631 21,788 21,985 22,241 22,604 23,151 23,978 25,203 26,957 29,372 32,572 38,751 48,277 60,149 74,922 93,130 114,877 139,302 164,201 186,095 200,882 204,941 196,309 175,468 145,374 110,629 76,146 45,834 27,532
D 270,003 176,302 211,120 242,134 263,408 270,003 259,663 233,722 196,744 155,053 114,794 80,403 53,954 35,422 28,771 24,861 22,655 21,471 20,869 20,592 20,504 20,536 20,655 20,850 21,127 21,503 22,010 22,696 23,639 24,945 26,753 29,216 32,492 38,084 48,034 60,644 76,552 96,330 120,055 146,746 173,973 197,924 214,114 218,574 209,152 186,389 153,551 115,715 78,281 45,524 26,752
E 30,703 4,036 4,184 4,306 4,436 4,604 4,820 5,085 5,406 5,810 6,347 7,088 8,113 9,515 11,391 13,824 16,833 20,308 23,955 27,293 29,727 30,703 29,887 27,298 23,336 18,661 13,990 9,897 6,687 4,403 2,907 1,988 1,452 1,154 953 813 734 656 552 423 286 159 49 -40 -102 -131 -128 -107 -91 -104 -154
軸のオプション
境界値
A
最小値 0.0
最大値 250000.0
B, C, D,
最小値 0.0
最大値 300000.0
E
最小値 -5000.0
最大値 350000.0
実際の最大値
A: 205,871
B: 245,764
C: 259,147
D: 270,003
E: 30,703
(GG) 2021/08/31(火) 06:43
30日スレッド記載の「1列分に全データの最大値」は必要なかったので入れていません、
無視してください
よろしくお願いいたします。
(GG) 2021/08/31(火) 07:09
(マナ) 2021/08/31(火) 07:30
言葉による説明では、最後の列に最大値そのものをデータに入れるとかあり、 意味不明でしたが、明確になりました。
こういうことですか? Sub test() Dim chobj As ChartObject Dim ch As Chart Dim sc As FullSeriesCollection Dim ser As Series Dim m As Double
For Each chobj In ActiveSheet.ChartObjects Set ch = chobj.Chart Set sc = ch.FullSeriesCollection m = 0 For Each ser In sc m = Application.Max(m, Application.Max(ser.Values)) Next ch.Axes(xlValue).MaximumScale = m ch.Axes(xlValue).MinimumScale = 0 Next End Sub 目盛り線を抜けたプロットもあり、数値がよみとれませんね。 他の方のように相対的なものにのみ意味があるなら、 指数で表示するのがいいでしょうね。 やはり実額が必要なら、上記のようなものになるでしょうね。 (γ) 2021/08/31(火) 07:44
(´・ω・`)様、(傘)様のやり方でもできそうです。
ありがとうございます。
(QS)様、勉強不足でよくわかりませんでした。
参考にさせていただきます。
マナ様、いろいろとありがとうございました。
皆様、感謝いたします。今後ともどうぞよろしくお願いいたします。
(GG) 2021/08/31(火) 12:49
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.