dポイントプレゼントキャンペーン実施中!

 エクセル2007、
 OSはWindows Vista と XPの両方です。

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

 よろしくお願いします。

「はみ出たレーダーチャートの表示方法」の質問画像

A 回答 (7件)

値100以外の目盛り線を引かなくてもよくて、データの最大値が200を超えないという条件つきですが


軸の書式設定のメモリタブで
最小値:0
最大値:199
メモリ間隔:100
補助メモリ間隔:(適宜)
の設定で何とかいけると思います。

うまく描画できる最大値としては
要素の位置にもよりますが、ご質問の画像
Aの位置で200ぎりぎりいっぱい
B・Eの位置で205
C・Dの位置で250
までは何とか切れずに描画できる限界のようです。
ただし確認したのはExcel2003です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/19 14:47

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

 マクロは試したことがないため、これを機に学んでみようかと思います。いただいた文字列(?)を入力したところ、作業によって重ねられたチャートが表示されました。私の下準備が足りないせいか、なぜかはみ出ているところは表示されませんでしたが……。

 皆々様のおかげで幾多の方法を確認できました。
 本当にありがとうございました。

お礼日時:2009/10/29 13:18

返事を頂けませんが、もうみていないのですか?



もうひとつ考えてみました。
元のグラフをコピーして、最大値を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
    • good
    • 0

少々手間かもしれませんが、図形を重ね合わせて誤魔化せばどうでしょうか。



A:最大値100で固定したグラフのプロットエリアを「塗りつぶしなし」に設定
B:最大値100で固定したグラフと同サイズの四角形を用意
次に、最大値非固定のグラフを描画し図形に加工する。
最大値100で固定したグラフとプロットされた図形を同サイズに調整
プロットされた図形部とプロットエリア以外は非表示に設定
調整されたグラフをコピーし、図として貼り付け
C:図形部の左右上下をトリミング
B、C、A、の順で重ね合わせる(Aを「最前面に移動」Bを「最背面に移動」)
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/29 13:17

同じ内容の質問がありました。


レーダーチャートをはみ出させるには
http://oshiete.homes.jp/qa4316608.html

この回答への補足

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

補足日時:2009/10/19 14:50
    • good
    • 0

こんばんは!


参考になるかどうか判りませんが・・・

無理矢理↓の画像のように作ってみました。

どうしても最大値を100で作成したい!ということですよね?

レーダーチャートでグラフを作成したあとに
オートシェイプの三角形を貼り付けて、画面を拡大し、微調整しています。

そして、系列の色と三角形の塗りつぶしの色をあわせてみました。
(系列内に三角形の余分な直線が入りますので、とりあえずオートシェイプの「線なし」にして、あとからオートシェイプの直線を書き入れています)

「B 150」に関してはテキストボックスの線なしで後から貼り付けています。

以上、かなり強引な方法ですが、
他に良い方法があれば読み流してくださいね。m(__)m
「はみ出たレーダーチャートの表示方法」の回答画像3
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/19 14:50

 


メモリをダブルクリックして、目盛りの最大値を返ればよい
 
「はみ出たレーダーチャートの表示方法」の回答画像1

この回答への補足

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

補足日時:2009/10/16 20:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!