- ベストアンサー
はみ出たレーダーチャートの表示方法
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
値100以外の目盛り線を引かなくてもよくて、データの最大値が200を超えないという条件つきですが 軸の書式設定のメモリタブで 最小値:0 最大値:199 メモリ間隔:100 補助メモリ間隔:(適宜) の設定で何とかいけると思います。 うまく描画できる最大値としては 要素の位置にもよりますが、ご質問の画像 Aの位置で200ぎりぎりいっぱい B・Eの位置で205 C・Dの位置で250 までは何とか切れずに描画できる限界のようです。 ただし確認したのはExcel2003です。
その他の回答 (6)
- xls88
- ベストアンサー率56% (669/1189)
回答番号:No.5 をマクロ化してみました。 こちらの方はプロットエリアのサイズは元のグラフのままです。 シート上に、元のグラフが1個のみあると仮定 最大値は自動設定 計算では図形化したグラフのサイズと位置座標に少しずれが出ます。 その為、補正値を入れてズレを修正しています。 ズレの正体が掴めていません。 Sub test2() Dim chrleft Dim chrtop Dim chrwidth Dim chrheight Dim plawidth Dim plaheight Dim plaleft Dim platop Dim maxscale Dim x0 Dim y0 With ActiveSheet.ChartObjects(1) chrleft = .Left chrtop = .Top chrwidth = .Width chrheight = .Height With .Chart maxscale = .Axes(xlValue).MaximumScale plaleft = .PlotArea.InsideLeft platop = .PlotArea.InsideTop plawidth = .PlotArea.InsideWidth plaheight = .PlotArea.InsideHeight x0 = plaleft + plawidth / 2 y0 = platop + plaheight / 2 .HasAxis(xlValue) = False .Axes(xlValue).HasMajorGridlines = False .Axes(xlValue).HasMinorGridlines = False .ChartGroups(1).RadarAxisLabels.Font.ColorIndex = 2 End With End With ActiveSheet.ChartObjects(1).Chart.ChartArea.Copy ActiveCell.Activate ActiveSheet.Pictures.Paste With ActiveSheet.Shapes(ActiveSheet.Shapes.Count) With .PictureFormat .CropLeft = plaleft + 6 '補正値:+6 .CropTop = platop + 5 '補正値:+5 .CropRight = chrwidth - plaleft - plawidth .CropBottom = chrheight - platop - plaheight End With .LockAspectRatio = msoTrue .Width = .Width * maxscale / 100 .Left = chrleft + (x0 - .Width / 2) + 4.5 '補正値:+4.5 .Top = chrtop + (y0 - .Height / 2) + 2 '補正値:+2 .ZOrder msoSendToBack End With With ActiveSheet.ChartObjects(1).Chart .HasAxis(xlValue) = True .HasAxis(xlCategory) = True .Axes(xlValue).HasMajorGridlines = True .Axes(xlValue).HasMinorGridlines = True .Axes(xlValue).MaximumScale = 100 .PlotArea.Interior.ColorIndex = xlNone .ChartArea.Interior.ColorIndex = xlNone .ChartGroups(1).RadarAxisLabels.Font.ColorIndex = xlAutomatic End With With ActiveSheet.Shapes.AddShape(msoShapeRectangle, chrleft, chrtop, chrwidth, chrheight) .Fill.ForeColor.SchemeColor = 1 .Line.Weight = 0 .ZOrder msoSendToBack End With End Sub 尚、回答番号:No.6の元のグラフも最大値は自動設定で考えています。
お礼
マクロは試したことがないため、これを機に学んでみようかと思います。いただいた文字列(?)を入力したところ、作業によって重ねられたチャートが表示されました。私の下準備が足りないせいか、なぜかはみ出ているところは表示されませんでしたが……。 皆々様のおかげで幾多の方法を確認できました。 本当にありがとうございました。
- xls88
- ベストアンサー率56% (669/1189)
返事を頂けませんが、もうみていないのですか? もうひとつ考えてみました。 元のグラフをコピーして、最大値を100、グラフエリアを塗り潰しなし、にして重ねあわせます。 元のグラフは、数値軸、軸ラベル、目盛線等を非表示にしておきます。 重ねたときに、プロット部分がぴったり合うように、プロットエリアのサイズと位置を調整しなければなりません。 この作業が面倒なのでマクロを組んでみました。 提示された例で試した限りでは上手く動いています。 ただし、プロットエリアのサイズが小さくなるので、相対的にグラフエリアの余白が大きくなります。 元のグラフを選択しておいてマクロを実行してみてください。 (他にグラフはないものと仮定しています。) Sub test1() Dim chrleft Dim chrtop Dim plawidth Dim plaheight Dim plaleft Dim platop Dim maxscale Dim x0 Dim y0 With ActiveChart With .Axes(xlValue) maxscale = .MaximumScale End With chrleft = .Parent.Left chrtop = .Parent.Top plawidth = .PlotArea.InsideWidth plaheight = .PlotArea.InsideHeight x0 = .PlotArea.InsideLeft + plawidth / 2 y0 = .PlotArea.InsideTop + plaheight / 2 End With ActiveChart.ChartArea.Copy ActiveSheet.Paste ActiveSheet.ChartObjects(1).Activate With ActiveChart .HasAxis(xlValue) = False .Axes(xlValue).HasMajorGridlines = False .Axes(xlValue).HasMinorGridlines = False End With ActiveSheet.ChartObjects(2).Activate With ActiveChart With .Axes(xlValue) .MaximumScale = 100 End With .Parent.Left = chrleft .Parent.Top = chrtop .PlotArea.InsideHeight = plaheight * 100 / maxscale .PlotArea.InsideWidth = plawidth * 100 / maxscale .PlotArea.InsideLeft = x0 - .PlotArea.InsideWidth / 2 .PlotArea.InsideTop = y0 - .PlotArea.InsideHeight / 2 .ChartArea.Interior.ColorIndex = xlNone End With End Sub
- xls88
- ベストアンサー率56% (669/1189)
少々手間かもしれませんが、図形を重ね合わせて誤魔化せばどうでしょうか。 A:最大値100で固定したグラフのプロットエリアを「塗りつぶしなし」に設定 B:最大値100で固定したグラフと同サイズの四角形を用意 次に、最大値非固定のグラフを描画し図形に加工する。 最大値100で固定したグラフとプロットされた図形を同サイズに調整 プロットされた図形部とプロットエリア以外は非表示に設定 調整されたグラフをコピーし、図として貼り付け C:図形部の左右上下をトリミング B、C、A、の順で重ね合わせる(Aを「最前面に移動」Bを「最背面に移動」)
お礼
多忙でしばらくパソコンから離れており、回答の確認が遅れました、すいません。何度も例を作成していただきありがとうございます。 当方、お恥ずかしながらエクセルの操作に慣れていませんので、十分な理解に至るまでまだ時間を要しますが、No.3さんのと方法は似ていると考えてよろしいでしょうか? 教えていただいた方法がうまくできないので、じっくり時間をかけて取り組みたいと思います。
- xls88
- ベストアンサー率56% (669/1189)
同じ内容の質問がありました。 レーダーチャートをはみ出させるには http://oshiete.homes.jp/qa4316608.html
補足
返事遅れました。 すいません、質問文にある「過去の質問」とは、それのことです。あまり参考にならなかったので、あらためて質問したしだいです。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 参考になるかどうか判りませんが・・・ 無理矢理↓の画像のように作ってみました。 どうしても最大値を100で作成したい!ということですよね? レーダーチャートでグラフを作成したあとに オートシェイプの三角形を貼り付けて、画面を拡大し、微調整しています。 そして、系列の色と三角形の塗りつぶしの色をあわせてみました。 (系列内に三角形の余分な直線が入りますので、とりあえずオートシェイプの「線なし」にして、あとからオートシェイプの直線を書き入れています) 「B 150」に関してはテキストボックスの線なしで後から貼り付けています。 以上、かなり強引な方法ですが、 他に良い方法があれば読み流してくださいね。m(__)m
お礼
返事遅れました。 わざわざ作成した画像まで添付していただき痛み入ります。 途中にメモリ間隔の枠があるので、こちらも有効ですね。時間の許すときに視野に入れてみます。 ありがとうございました。
- 中京区 桑原町(@l4330)
- ベストアンサー率22% (4373/19606)
お礼
返事遅れました。 おお、理想に近い形となりました。なるほど、最後の外枠をメモリ間隔よりわずかに小さくすることで、外枠を非表示、かつ最大値が100に見えるようにしているということですか。後は数値にあわせて上記の三項目を調整すればよいのですね。 ありがとうございました。