• ベストアンサー

エクセルで図形を描きたいのですが

こんにちは。 エクセルで寸法を入力するとその数値に従った 図形を描きたいのですが 例えば四角形の場合 A1に「100」(縦の寸法) B1に「200」(横の寸法) と入力すると100*200の長方形が描ける。 といった具合です。 とりあえずココまでは「グラフ」を使ってできました。 問題は寸法も入れたいのです。 縦の線の横に「100」、横の線の上に「200」 と表示させたいのですがこれが出来ません。 現在はテキストボックスを作成して寸法を書いていますが これだと 1、寸法が変わるといちいち手作業で書き換えないといけない 2、寸法が変わると図形に合わせて手作業で動かさないといけない というのが不便です。 なんとか図形が変わるとそれに連動して数値と場所が 変更されるようには出来ないでしょうか?

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

  • ベストアンサー
  • dejiji-
  • ベストアンサー率38% (327/858)
回答No.3

2.についてグラフには一つの形式のラベルしか設定できません。そのため、X軸とY軸のデータラベルを分ける必要があるのでグラフを2個にする必要があります。 そこで、グラフを構成するデータをもう一つ作ります。 同じデータを持ったものを作りグラフを作るのです。これがデータの追加となります。(グラフを2個重ねます。そうすると見た目には一つのグラフになります。)これは、同じデータ(座標を持ったもの)をもった表を2個作り、それぞれの同じグラフを作るのです。 これは、一つのデータについてデータラベルが同じ形式でしか付かないため、X軸とY軸のデータラベルを分けて表示できないためにラベルを2種類にするためにそれぞれのグラフにラベルを設定するために2個のグラフを重ねます。) 一つのデータグラフにX軸のデータ、そしてもう一つのグラフにY軸のデータを表示させるのです。 1.については、完全に中央とは行きません。基本的にX軸は右下のデータのラベルですから、右下に近くなります。中央近くについては、少し難しいですが、X軸について言うと、データラベルの位置を左にして、その上に横位置を左寄せにすれば中央に近くなります。 今の私の知識から言うと、ほぼMAXですかね。もし、私がこのようなことをするなら、CADを使ってしまいますが。(これも我流ですが。)CADもフリーのソフトが有りますから。

grapo
質問者

お礼

お返事遅くなりました。すいません。 分り易いレスありがとうございます。 X軸とY軸の値のラベルを作る為に2つのグラフを 作るんですね。 昨日作業していて気がついたのですが、ラベルにも 数式を入力することが出来ますよね。 これを使ってラベルに直接セルの値を入れるように するとグラフも一つで済むようです。 ラベルの位置も手動で動かせたのである程度中央に 持っていくことができました(長さが変わるとズレ ますが…) 当方もCADは使っているのですが今回は計算書を作成 していまして(擁壁の計算書です)、擁壁の寸法や その他の設計条件を入力すると、全部計算してくれる。 というのを作っています。 ということでなんとかエクセル上で図を描きたかった 次第です。 度々ありがとうございました。

その他の回答 (3)

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

エクセルVBAですが VBE画面のVBAProjectのSheet1をダブルクリックし、ワークシートのChangeイベントを出して、その画面に、下記をコピーし貼りつけ、A1セルやB1セルの数値を変えてみてください。 四角の大きさ 寸法の数値と位置(縦横2箇所) が即座に変ります。 Private Sub Worksheet_Change(ByVal Target As Range) 'MsgBox Target.Address If Target.Address = "$A$1" Or Target.Address = "$B$1" Then ActiveSheet.DrawingObjects.Delete a = Cells(1, "A") b = Cells(1, "B") ActiveSheet.Shapes.AddShape msoShapeRectangle, 200, 100, a, b ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200 + a / 2 - 15, 100 - 20, 30, 20). _ Select Selection.ShapeRange.Line.Visible = msoFalse Selection.Characters.Text = Cells(1, "A") '----- ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200 + a + 15, 100 + b / 2 - 20 + 10, 30, 20). _ Select Selection.ShapeRange.Line.Visible = msoFalse Selection.Characters.Text = Cells(1, "B") End If End Sub 仕事には使い物にならないかもしれませんが、イメージは こんなものでしょう。 上記のコードの中のmsoShapeRectangleの次の4組の数値をいろいろ変えて、適当なものを見つけてください。定数倍をかけたり、値を増減するといろいろ変ります。 その()内の数値は 左より距離 トップからの距離 図形の幅 図形の高さ の4組の数値のはずです。

grapo
質問者

お礼

おおっ…VBAですね。。 私がずっと見て見ぬ振りをしていた…(^^; VBAは過去何度かチャレンジしてはみたのですが その度に挫折してきました。 今まではVBAを使わなくてもなんとかなったので 良かったのですが、今回初めて「やっぱりVBAやっとけば 良かったな~」と実感しています。 これを気にもう一度チャレンジしてみようかな(^^; ありがとうございました。

  • dejiji-
  • ベストアンサー率38% (327/858)
回答No.2

一瞬グラフ?と思いましたが、散布図で描いたのでしょうか。 テキストボックスの使用であればNo1の方の言われているようにセルの参照を使えばリンクは出来ます。この場合、テキストボックスを作り、数式バーをクリックして=から入力すれば(テキストボックスに直接では駄目です。)しかし、これだとテキストボックスは固定位置になります。 後は、少し複雑になりますがデータラベルを使用する方法があります。グラフオプションからデータラベルをつけ、必要以外のデータラベルをクリアし、一つにします。後は位置フォントなどを調整して下さい。 次に元のデータからもう一つ同じデータのグラフを追加します。これに又データラベルを追加してもう一つのラベルを作ります。 これで、2つのラベルが表示されます。これなら、グラフの大きさが変わっても位置は自動的に移動し、データも自動で変更できます。

grapo
質問者

お礼

ありがとうございます。 図形は寸法の入力値から座標を出して、その座標を 散布図のグラフで作ってます。 >テキストボックスに直接では駄目です。 お察しの通りコレでやってました(^^; できないわけだ… >これだとテキストボックスは固定位置になります。 そうなんです。これが一番解消したい問題です。 データラベルは知りませんでした。 今作業中なので教えて頂いた方法を試してみます。

grapo
質問者

補足

すいません。。 データラベルの方法なんですが、ちょっと分りませんでした。 とりえず データラベル表示、いらないラベルをクリア。 というところまで出来ました。 1、データラベルはポイント(座標)の近くに表示されますが これを(四角形の)辺の中央辺りにもってくることは可能でしょうか? 2、「次に元のデータからもう一つ同じデータのグラフを追加します。これに又データラベルを追加してもう一つのラベルを作ります。」 というのが分らなかったのですが、どう言う意味でしょうか? なぜもう一つ作るのか?というのが分りませんでした(^^; すいませんが、お時間があればお願い致します。

noname#9284
noname#9284
回答No.1

テキストボックスを選択し、数式バーに「=A1」のようにセル参照式を入力し、Enterを押します。 A1には寸法となる数字を表示させてはいかがでしょうか。

grapo
質問者

お礼

ありがとうございます。 数式バーに入力すれば数式参照できるんですね。 ずっとテキストボックスに数式を入力してました(^^; 不便だな~って思ってたんですがやっぱり出来るんですね。

関連するQ&A