• ベストアンサー

はみ出たレーダーチャートの表示方法

 エクセル2007、  OSはWindows Vista と XPの両方です。  とあるレーダーチャートをつくり、一部ずば抜けたところもつぶすことなく表示したいのですが、どうやればいいのか分かりません。過去の質問も、バージョンが古いせいか、いまいち理解できませんでした。  たとえば、最大値100のレーダーチャートの中に、例外として150や200という項目があった場合……枠からはみ出した部分をすべて表示させる方法はありますでしょうか? グラフをすべて表示させた結果として、枠が小さくなってしまってもかまいません。  よろしくお願いします。

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

  • ベストアンサー
回答No.2

値100以外の目盛り線を引かなくてもよくて、データの最大値が200を超えないという条件つきですが 軸の書式設定のメモリタブで 最小値:0 最大値:199 メモリ間隔:100 補助メモリ間隔:(適宜) の設定で何とかいけると思います。 うまく描画できる最大値としては 要素の位置にもよりますが、ご質問の画像 Aの位置で200ぎりぎりいっぱい B・Eの位置で205 C・Dの位置で250 までは何とか切れずに描画できる限界のようです。 ただし確認したのはExcel2003です。

noname#122669
質問者

お礼

 返事遅れました。  おお、理想に近い形となりました。なるほど、最後の外枠をメモリ間隔よりわずかに小さくすることで、外枠を非表示、かつ最大値が100に見えるようにしているということですか。後は数値にあわせて上記の三項目を調整すればよいのですね。  ありがとうございました。

その他の回答 (6)

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

回答番号: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の元のグラフも最大値は自動設定で考えています。

noname#122669
質問者

お礼

 マクロは試したことがないため、これを機に学んでみようかと思います。いただいた文字列(?)を入力したところ、作業によって重ねられたチャートが表示されました。私の下準備が足りないせいか、なぜかはみ出ているところは表示されませんでしたが……。  皆々様のおかげで幾多の方法を確認できました。  本当にありがとうございました。

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

返事を頂けませんが、もうみていないのですか? もうひとつ考えてみました。 元のグラフをコピーして、最大値を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)
回答No.5

少々手間かもしれませんが、図形を重ね合わせて誤魔化せばどうでしょうか。 A:最大値100で固定したグラフのプロットエリアを「塗りつぶしなし」に設定 B:最大値100で固定したグラフと同サイズの四角形を用意 次に、最大値非固定のグラフを描画し図形に加工する。 最大値100で固定したグラフとプロットされた図形を同サイズに調整 プロットされた図形部とプロットエリア以外は非表示に設定 調整されたグラフをコピーし、図として貼り付け C:図形部の左右上下をトリミング B、C、A、の順で重ね合わせる(Aを「最前面に移動」Bを「最背面に移動」)

noname#122669
質問者

お礼

 多忙でしばらくパソコンから離れており、回答の確認が遅れました、すいません。何度も例を作成していただきありがとうございます。  当方、お恥ずかしながらエクセルの操作に慣れていませんので、十分な理解に至るまでまだ時間を要しますが、No.3さんのと方法は似ていると考えてよろしいでしょうか? 教えていただいた方法がうまくできないので、じっくり時間をかけて取り組みたいと思います。

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

同じ内容の質問がありました。 レーダーチャートをはみ出させるには http://oshiete.homes.jp/qa4316608.html

noname#122669
質問者

補足

 返事遅れました。  すいません、質問文にある「過去の質問」とは、それのことです。あまり参考にならなかったので、あらためて質問したしだいです。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 参考になるかどうか判りませんが・・・ 無理矢理↓の画像のように作ってみました。 どうしても最大値を100で作成したい!ということですよね? レーダーチャートでグラフを作成したあとに オートシェイプの三角形を貼り付けて、画面を拡大し、微調整しています。 そして、系列の色と三角形の塗りつぶしの色をあわせてみました。 (系列内に三角形の余分な直線が入りますので、とりあえずオートシェイプの「線なし」にして、あとからオートシェイプの直線を書き入れています) 「B 150」に関してはテキストボックスの線なしで後から貼り付けています。 以上、かなり強引な方法ですが、 他に良い方法があれば読み流してくださいね。m(__)m

noname#122669
質問者

お礼

 返事遅れました。  わざわざ作成した画像まで添付していただき痛み入ります。  途中にメモリ間隔の枠があるので、こちらも有効ですね。時間の許すときに視野に入れてみます。  ありがとうございました。

回答No.1

  メモリをダブルクリックして、目盛りの最大値を返ればよい  

noname#122669
質問者

補足

 迅速な回答ありがとうございます。  すいません、最大値100というのは固定したままで、「いかにも特化している」、ということを強調させたレーダーチャートの作成を希望しています。  言葉が足りなくて申し訳ありません。すぐに修正しておきます。

関連するQ&A