• ベストアンサー

グラフウィザードにない形のグラフを描きたい

使用OS:Windows98SE 使用ソフト:Excel97,Word98 グラフウィザードを見てみたのですがちょうどいいグラフが見つからず、今はオートシェイプでいちいち線を描いているのですが、データを入力したら自動的にグラフになるようにしたくて質問しました。 グラフの形は円形で、中心が0で一番外側の円を1として、0.1刻みに目盛りとして同心円が描かれています。そして円の一番上を0度として、時計回りにぐるっと360度(=0度)まで10度刻みに線が入っています。 グラフのデータは、このようになっています。     A   B   C   D   E   F 長さ 0.391 0.767 0.392 0.765 0.397 0.775 角度 110  291  230  50   350  17 このデータで、 Aのグラフの線は円の中心から、110度の向きに0.391の長さで、 Bのグラフの線は円の中心から、291度の向きに0.767の長さで、 …という風に円の中心から放射状に6本の線が伸びている形のグラフにして、それぞれの線の先にA~Fの項目名を入れるようにしたいのです。 このグラフをエクセルで作成した後、コピーしてワードに貼りつける予定です。 グラフウィザードにこのようなグラフはありますでしょうか?もしくはユーザーがグラフの種類を追加できるなどの機能があるのでしょうか? ウィザードが使えないのでしたら、マクロでも構いません。エクセルのマクロは少しだけ解ります。 解りづらい文章ですみません。他に何か補足しなければいけない事はありますでしょうか…。 ご存知の方、どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#1です。やっと同心円と円の扇形分割のプログラムが出来ました。 Sub test01() Worksheets("sheet1").DrawingObjects.Delete For i = 50 To 200 Step 10 enn 200, i Next i enn 200, 1 For s = 0 To 360 Step 30 senn 200, s Next s End Sub Sub enn(c, r) ActiveSheet.Shapes.AddShape(msoShapeOval, c - r, c - r, 2 * r, 2 * r).Select Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.ForeColor.SchemeColor = 10 End Sub Sub senn(l, s) pai = 3.141592 rd = s * pai / 180 y1 = l - l * Cos(rd) x1 = l + l * Sin(rd) ActiveSheet.Shapes.AddLine(l, l, x1, y1).Select Selection.ShapeRange.Line.ForeColor.SchemeColor = 11 End Sub 上のコーディングを参考にして、角度と中心からの長さ を指定して、ご質問のグラフを考えて見てください。 同心円の線の色は赤,線は緑色にしています。

takahiro_
質問者

お礼

わざわざ作って頂いてありがとうございます! すごいですね! 考えていたイメージそっくりです。 これできっとグラフが完成できると思います。

その他の回答 (2)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

私もヒントだけ。 この条件ですと、 x=SIN(RADIANS(角度))*長さ y=COS(RADIANS(角度))*長さ でグラフにした時の(x,y)が計算できます。   0   0 Aのx Aのy   0   0 Bのx Bのy   0   0 … Fのx Fのy として散布図のxyに指定すると、 > 円の中心から放射状に6本の線が伸びている形のグラフにして、 の部分はクリアできます。 -- ただし、 > 同心円が描かれています。 > 線の先にA~Fの項目名を入れるようにしたいのです。 というのが難しいです。 グラフにオートシェイプを正確に合わせるのも難しいので、imogasiさんのオートシェイプで描く方法と一長一短なんですよね。

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 sinとかcosを使うんですね…。気がつきませんでした…。 グラフとオートシェイプはどうしてもずれてしまいますね。画面での見た目と、印刷結果のどちらもきれいにあわせてほしいと頼まれてしまいましたので、教えていただいた数式を使ってオートシェイプの矢印を描こうと思うのですが…。がんばってみます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

回答が出ないし、私も十分解決してないが、ヒントだけ。 (1)同心円をシートに描く Sub enn(c, r) ActiveSheet.Shapes.AddShape(msoShapeOval, c, c, r, r).Select Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Fill.Transparency = 0# End Sub '----- Sub test01() enn 200, 160 enn 190, 180 enn 180, 200 enn 170, 220 enn 160, 240 End Sub これで5つの円ですがc、rを調節すれば同心円となります。テスト済み。 (2)直線の書き方 同じく Sub senn(c, l, s) ActiveSheet.Shapes.AddLine(c, l, s, c).Select End Sub '------ Sub test02() senn 280, 400, 250 End Sub のように引数付きのサブルーチンを作る。 質問に描いておられる直線は、4つのパラメータを決めることでかけるはずです。ただどういう風に指定すると角度と長さが指定したものになるか、未究明です。 多分、線の長さはピタゴラスの定理Sqr(x^2+y^2)を使い、角度はTANGENTを使うのでしょう。 XとX*TAN(s)を求め、長さは平方和の平方根でそれが指定長であるので、Xが求まる。 私はLineの4つのパラメータで悩んでいるぐらいなので、ヒントしか出せません。後をよろしく。 あと線の太さや色などは自由になります。コメントもテキストボックスやシェイプで入れられるでしょう。

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 中心を合わせた円をどうやって描いたらいいのか全く見当がつきませんでしたので、とても助かりました。 サブルーチンというのも使ったことがないので、ゆっくりですががんばって作っていきます。

関連するQ&A