• 締切済み

EXCEL 散布図の軸について

グラフについてどなたか助けてください。 散布図を作っているのですが、下記の条件でY軸を決めたいのですが どのように設定すればよいのでしょうか? データ:A:120,B:121,C:123,D:123,E:125,F:126の場合(Y軸:値 X軸:A-F) 1. データは絶対に0にならないので、0を表示したくない。 2. データの平均値をY軸の中心にして散布させたい。 軸の書式設定で最小値、最大値のチェックを外し自分で最小値と最大値を 入力する方法も考えましたが、データの最大値及び最小値が、変化する場合 再度設定する必要があるのでこの手間を省きたいと考えています。 よろしくお願いします。

みんなの回答

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.6

はい。 出来ます。 下記のように 追加してください。 尚、表示形式には、自信がない([h]"°"mm"'"SS"''" を張り付けただけです。)ので、違っていましたら修正してくださいね。 また、マクロの記録で、トレース(記録)して見ると いろいろ出来ますので 試して 見ては、どうでしょうか??。 追加、先の回答で、この 「マクロの保存先」は、作業中のブックにします。 としましたが、 個人用マクロに保存先を選ぶと あなたのPCにマクロが、登録され エクセルのBookに関係なく 個人用マクロ( personal.XLS )に入っている マクロが、実行出来ますよ。   ActiveChart.Axes(xlValue).Select With ActiveChart.Axes(xlValue) .MinimumScale = My_AVG - My_R .MaximumScale = My_AVG + My_R .MinorUnitIsAuto = True .MajorUnitIsAuto = True .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With ' ここから下は、追加部分です。 Selection.TickLabels.NumberFormatLocal = "[h]""°""mm""'""ss""''""" ' この上が、新規追加部分です。" が、両端に1個 づつ多いですが、 ' これは、文字列として 設定しないと いけないので削除しては ' いけませんよ。 End Sub ' ここは、いままでの部分です。 ブログラムのしめくくりです。 余談ですが、PCの調子が悪く週末かかりっきりで修復していました とのことですが、 今後調子が、悪くなったら クリーンアップ センターを利用してください。(他にもいろいろありですよ。)   http://onecare.live.com/site/ja-JP/center/cleanup.htm PC にはたくさんの不要なファイルが保存されています。害のないファイルもありますが、PC の処理速度を遅くしたり、PC 上で行われた操作を盗み見る悪質なファイルもあります。 不要なファイルが PC の中に散乱していませんか? 無料のクリーンアップ スキャンを使用して、コンピュータの処理速度を遅くする不要なファイルを検索し、削除することができます。

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.5

補足説明のメールが、届いてなくて回答が、遅くなりました。 1.実際のy軸には[h]"°"mm"'"SS"''"の表示形式を使用したいのですが 2.グラフ内のフォントの変更をしたいのですが 回答; 1.y軸の数字の部分を選択して、右クリックメニューから軸の書式設定を選択します。 次に、表示形式をタブから選択してユーザー定義を左の選択メニューから選び [h]"°"mm"'"SS"''"を 種類の直下のボックスに書き込むか、コピーして貼り付けます。 最後に OK ボタンを押して 終わりです。 2.変更したい部分の文字を選択して 上記1 同様にしてフォントのタブを選択します。 ここで、好きなフォントを選択して OK ボタンを押して 終わりです これらは、マクロの実行後 いつでも変更できます。

rufy01
質問者

お礼

いつもご回答ありがとうございます。PCの調子が悪く週末かかりっきりで修復していました。初めに、ご回答いただいた軸の表示形式の件ですが、現在教えていただいた様には設定してあります。質問の仕方が悪かったですね。この作業を頂いたマクロに組み込むことは可能でしょうか?毎回グラフを作成した後この作業は手間になってしまいます。

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.4

一応完成しましたので、 試してください。 右の URLから  http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/index.html マクロの自動記録と実行を読んで、ください。 読み終わったら 2.メニューバーの【ツール】→【マクロ】→【新しいマクロの記録】を選択します。 【マクロの記録】ダイアログが表示されますので、「マクロ名」「マクロの保存先」を確認して、【OK】をクリックします。 注意; この 「マクロの保存先」は、作業中のブックにします。 この後、マウスを適当にいじっても いじらなくても 【記録】ツールバーの【記録終了】ボタンをクリックします。 4.【Alt】+【F11】でVisual Basic Editor (以下VBEと表記します)を開きます。 (メニューバーからは、【ツール】→【マクロ】→【Visual Basic Editor】を選択します) 標準モジュールのModule1にMacro1が記録されました。 Excel(エクセル) VBA入門:目次 を押して ***** 戻って VBE(Visual Basic Editor/VBエディタ)の使い方 を読みます。 コードの記述、表示、および編集を行います。 プロジェクト エクスプローラでフォーム/モジュールをダブルクリックするか、選択して[コードの表示] ボタンをクリックします コードの一番上に Option Explicit の文字が、ありますので、 キーボードの7の上の文字 [']を左端につけて 'Option Explicit とします。 そして、その下の コード(文字を削除します。) または、コード全部を削除します。 次に 下記 コードをコピーして貼り付けます。 ' 使用方法と 注意事項 ' データの最初のセルを アクティイブにして 実行する ' データの数は、制限なし ' データの並びは、縦方向、横方向を問わない。 Sub 散布図ぐらふ() Dim Hx As Long, Vy As Long Dim My_Cell_Add As String 'アクティイブ セルの Addressを確保 Dim Data_XY As Long ' データ数を確保 Dim Houkou As String ' データが、どの方向に 並んでいるかを保存 Dim myRange As Range Dim My_MAX As Variant ' 最大値 Dim My_MIN As Variant Dim My_AVG As Variant Dim My_R As Variant ' ばらつき幅 Dim My_Sheets As String My_Sheets = ActiveSheet.Name ActiveCell.CurrentRegion.Select Hx = ActiveWindow.RangeSelection.EntireColumn.Count Vy = ActiveWindow.RangeSelection.EntireRow.Count If Hx > Vy Then Data_XY = Hx Houkou = "H" Else Data_XY = Vy Houkou = "V" End If My_Cell_Add = Selection.Cells.Address(fase, False, xlA1, True) Set myRange = Selection.Cells My_MIN = Application.WorksheetFunction.Min(myRange) My_MAX = Application.WorksheetFunction.Max(myRange) My_AVG = Application.WorksheetFunction.Average(myRange) If Abs(My_AVG - My_MAX) > Abs(My_AVG - My_MIN) Then My_R = Abs(My_AVG - My_MAX) Else My_R = Abs(My_AVG - My_MIN) End If Charts.Add ActiveChart.ChartType = xlXYScatter If Houkou = "V" Then ' データが縦になっている ActiveChart.SetSourceData Source:=Sheets(My_Sheets).Range(My_Cell_Add), PlotBy:= _ xlColumns Else ' データが横になっている ActiveChart.SetSourceData Source:=Sheets(My_Sheets).Range(My_Cell_Add), PlotBy _ :=xlRows End If ActiveChart.Location Where:=xlLocationAsObject, Name:=My_Sheets With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "タイトル" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X数値軸" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y数値軸" End With ' ActiveChart.Axes(xlValue).Select With ActiveChart.Axes(xlValue) .MinimumScale = My_AVG - My_R .MaximumScale = My_AVG + My_R .MinorUnitIsAuto = True .MajorUnitIsAuto = True .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With End Sub 貼り付けが、終わったら 保存しましょう。 マクロの自動記録と実行 に戻り メニューバーの【ツール】→【マクロ】→【マクロ】を選択します。 散布図ぐらふ を選択して 実行ボタンを押します。 以上です。 分らない時は、聞いてください。 しばらくは、締め切らない方が 良いでしょう。

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.3

ある程度 作成しました。 検討待ち部分をいじってみてください。 引き続き 修正しますがね。 VBA は、ある程度 解るのでしょうか??。 **************************** ' データの最初のセルを アクティイブにして 実行する ' データの数は、制限なし Sub 散布図ぐらふ() Dim Hx As Long, Vy As Long Dim My_Cell_Add As String 'アクティイブ セルの Addressを確保 Dim Data_XY As Integer ' データ数を確保 Dim Houkou As String ' データが、どの方向に 並んでいるかを保存 Dim myRange As Range Dim My_MAX As Variant ' 最大値 Dim My_MIN As Variant Dim My_AVG As Variant Dim My_R As Variant ' ばらつき幅 ActiveCell.CurrentRegion.Select Hx = ActiveWindow.RangeSelection.EntireColumn.Count Vy = ActiveWindow.RangeSelection.EntireRow.Count If Hx > Vy Then Data_XY = Hx Houkou = "H" Else Data_XY = Vy Houkou = "V" End If If Application.ReferenceStyle = xlR1C1 Then My_Cell_Add = Selection.Cells.Address(fase, False, xlR1C1, True) Else My_Cell_Add = Selection.Cells.Address(fase, False, xlA1, True) End If Set myRange = Selection.Cells My_MIN = Application.WorksheetFunction.Min(myRange) My_MAX = Application.WorksheetFunction.Max(myRange) My_AVG = Application.WorksheetFunction.Average(myRange) If Abs(My_AVG - My_MAX) > Abs(My_AVG - My_MIN) Then My_R = Abs(My_AVG - My_MAX) Else My_R = Abs(My_AVG - My_MIN) End If Charts.Add ActiveChart.ChartType = xlXYScatter If Houkou = "V" Then ' データが縦になっている ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("I4:I9"), PlotBy:= _ xlColumns Else ' データが横になっている ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(My_Cell_Add), PlotBy _ :=xlRows End If ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "タイトル" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X数値軸" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y数値軸" End With ' ActiveChart.Axes(xlValue).Select With ActiveChart.Axes(xlValue) .MinimumScale = 90 '検討待ち .MaximumScale = 200 '検討待ち .MinorUnitIsAuto = True .MajorUnitIsAuto = True .Crosses = xlCustom .CrossesAt = 100 '検討待ち .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With End Sub

rufy01
質問者

お礼

VBAありがとうございます。 私はVBAは、分かりません。本日、色々なHPをみてみましたが、簡単に理解できるものではないようですね。。このような聞き方大変申し訳ないとは思いますが、頂いたVBAをどのように活用したらよいでしょうか? 大変申し訳ありません。もう少し教えてください。

rufy01
質問者

補足

早速、分からないながら頂いたVBA実行してみました。散布図の枠組み(軸を含み)出来ましたが、難点か問題があります。VBAは分からないので失礼な書き方がありかと思いますが、お許しください。 1. 当初の質問では、分かりやすいようなデータを書きましたが、実際散布されるデータは角度表示(##°##'##")を使用しています。実際の数字は、時間の数値を軸の表示形式で[h]"°"mm"'"SS"''"としていますので、実際のy軸には[h]"°"mm"'"SS"''"の表示形式を使用したいのですが。。 2. MinimumScale = 90 '検討待ち. MaximumScale = 200 '検討待ちにはあるフィールドに入力されているデータでも構いません。(もしかしたらこちらのほうがいいかもしれません。 3. グラフ内のフォントの変更をしたいのですが、教えていただけませんか? よろしくお願いします。

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.2

はい。 分かりました。 別の困ったさんの後になりますが、 今週中には、仕上げたいと思います。 それまで、待ってください。

rufy01
質問者

お礼

ありがとうございます。 その間も自分でも少し考えてみます。ちなみに私の質問では、質問を簡単にするため、データ量が少なかったのですが、実際のデータ数は50です。マクロになるとは思わなかったので、簡単に質問を書いてしまいました。申し訳ありません。 それではよろしくお願いします。

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.1

通常の方法では、無理があるので、マクロで、データをソートして 平均値と最大値、最小値を求め データの偏りを修正して(データの偏りの大きい方に合わせ) 注釈:平均値が、必ず データの中心にくるとは、断言出来ないので   このずれを補正しないと いけない。 グラフを作成する方法が、良いかと思います。 マクロでの回答は、だれかが、してくれるでしょう。 わたしが、作成しても良いですが、スタミナがないもので今回は、 見送りにさせて頂きます。 尚、誰も、回答してくれないときは、考えます。

rufy01
質問者

お礼

回答いただいてありがとうございました。出かけていたのでお礼のメッセージが遅くなってしまいました。 前回一度質問を一度書いたのですが、解答いただけなかったのでもう一度投稿してみました。 私には、ハードルが高そうです。現在に至っても他の誰も回答いただけないので出来ましたら、再度お助けいただけないでしょうか?

関連するQ&A

  • Excel散布図 X軸の値を変えたい

    ≪エクセル初心者です。Excel2000,WindowsXP になります。よろしくお願いいたします≫ エクセルで散布図を作りたいのですが、 X軸の値が元データの値にならず四苦八苦しております。 X軸は、8byteに始まり、64KBまでありますが グラフ>元のデータ>Xの値が8byte~64KB まで選択されているのに、この値が反映しません。 (X軸の値がゼロに始まり16で終わる図になってしまいます。) 「軸の書式設定」 で、 最小値・・・「8」 最大値・・・「64」 としたら、 X軸が16の値までしか 散布図のデータが反映しません。 グラフの元のデータとなる表は以下のとおりです。 セルA1   8byte, 16byte 32byte...........64KB 5Mbps   0.612   4.879   8.233    4.879 10Mbps   0.611  4.879     8.900     60.309  30Mbps  0.629  4.879    19.000     99.879 ★補足(1)  X軸8byte, 0.612  最小値   X軸64KB  99.879 最大値  といった結果になる散布図グラフを作成したい。  8byteの頃は、近い値ばかりなので散布図の「点」重なっており、  バイト数が上がる毎に、散布図の点がまだらになっていくようなグラフを目指しています。 ★補足(2)  Y軸は対数表示になります。 ★補足(3)  元のデータのセルA1はブランクですが  その他は全てデータが埋まっております。 以上の説明でお分かりいただけるか不安です。。。 もし不明な点がありましたらすぐ回答いたします。 お手数をおかけしますが ご回答の程よろしくお願いいたします。

  • エクセル 散布図 軸の入れ替え

    エクセル、散布図のついての質問です。    A B  C  ア 1 5 10  イ 2 7 20  ウ 3 9 30 例えば上記のような表の場合、グラフウィザードでデータ範囲を選択 して散布図を作成した時は、X軸にア・イ・ウ、Y軸にはA・B・C の各データがプロットされたグラフとなります。 そこで出来たグラフから、X軸とY軸を入れ替えたグラフに変更する ことは可能でしょうか? 具体的には、X軸がA・B・Cの各列、Y軸がア・イ・ウとなる グラフへの変更です。   ウ|   イ|       ←このような感じ   ア|     ――――――    0 10 30 「元のデータ」を選択して、系列毎に「Xの値」「Yの値」を選択 し直す(あるいは最初から選択する)方法は分かっています。 ただ、データ数が多い場合、ひとつひとつ変更していくのが煩雑な ので一気に変更できる機能がないかと思いまして・・。 ご教授願います。

  • エクセル2000 散布図

    エクセル2000で散布図を作成中です。 基本的な質問で申し訳ないのですが、2項評価点をX軸/Y軸に割り振り 散布図上の交差点を評価ランクとして出したいと思っています。 普通に2項の数値データ(X軸Y軸とも数値範囲:0.0~5.0)を範囲指定して グラフウィザードから散布図を作成すると、X軸はデータセルの順番に左から 順番に並べられるだけで、データ値を参照しません。グラフにはY軸データのみ 表示されています。 データ数は全てで63個(X/Y軸ともに)なのですが、不思議なことに52個まで のデータを範囲指定すると、X軸もデータ値が表示され上手く散布図が書けます。 元データで「系列」範囲を探ってみても、きちんとそれぞれのデータ値が入って います。データ表の書式はX/Y軸とも「数値」です。 なぜでしょうか?教えてください。 資料作成が行き詰まり、大変困っています。

  • エクセル散布図の軸がうまく表示されません

    エクセルの散布図作成についての質問です。X軸もしくはY軸の設定ですが、Y軸が突然、グラフの中心にきて動かせなくなったり、またX軸が上に表示されて、値がグラフにかぶってしまうという現象が起きています。 これを訂正したいのですが、どのようにすれば軸位置を動かせるのかわかりません。 これは、凡例が1つの場合は起こりませんが、凡例を複数以上にするとおきます。 ご存知の方がいらっしゃいましたら、教えていただけたら幸いです。 どうぞよろしくお願いいたします。

  • エクセルの散布図がおかしいです。

    エクセルでデータをまとめるために散布図でグラフを作ったのですが、どうやってもグラフがずれてしまいます。 X日目  データ1(Y1)  データ2(Y2) 0 -300 5.8 1 -260 5.76 2 -270 5.62 4 -250 5.79 7 -290 5.66 14 -310 5.82 大体このようなデータで、データ1を第1軸、データ2を第2軸で表示したいです。 データ1の方はずれてないのに、データ2の方だけ全体的に左にずれてしまいます。 例えばX軸の7の真下よりも左側にデータ2の7日目のデータがプロットされているといった感じです。 データ2だけ全てのプロットがX軸の正しい位置より左側にプロットされています。 どうすれば直るでしょうか? なお第2軸を設定しなかった場合には正しい位置にプロットされています。第2軸を設定するとずれます。 使用しているソフトはkingsoft2010です。

  • Excel2007 グラフ 散布図 X軸のとり方

    よろしくお願いします。 Excel2007でグラフを作るときのことについてです。 [a] [b] 0 1 2 4 2 5 1 3 上のようにセルに数字データを入力した場合だと、 X軸に[a]のデータが入り、Y軸に[b]のデータが入り散布図で 5| 4| 3| 2|     ● 1|    ● 0|__________________________ 0 1 2 という具合に上手いこといくのですが、 [a] [b] h 1 0 4 h 5 g 3 このように文字列となると下記図のようにX軸を単位でまとめてもらえませず、 各行のデータをX軸に並べていくようになります。 5| 4| 3| 2|      1|     0|__________________________ h 0 h g ・・・ どうにかこの場合だとhはhで纏められるようにして きちんとした散布図を作るにはどうしたらいいのでしょうか? 教えてください。

  • エクセルで二軸上の散布図

    二軸上のグラフでは折れ線グラフは描けるようなのですが、 同様に散布図は描けないのでしょうか?

  • エクセルの2軸表示について

    実験のデータをまとめるのにエクセルを使ってるんですが 友人のエクセルデータでは二軸になっても軸の書式設定でx軸の目盛タブはy軸同様 最大値、最小値、目盛り間隔・・・という項目になってるのですが 私のエクセルで二軸にしたら目盛タブは y数値軸との交点、目盛りラベルの間隔、目盛りの間隔 となっていてx軸の数値を上手く整理できません。 どうしたら友人と同じようにできるのでしょうか? 友人はどうやったか忘れてしまったそうなんです。 ちなみにExcel2000を使っています。 グラフは散布図で一軸のグラフを作ってから後でグラフの種類を選択し 二軸にしました。 また、初めから二軸にしてやってもみましたが同じ結果でした。 どうかよろしくおねがいします。

  • エクセルの散布図で

    クロスセクションデータで、商品A:Dまでの販売量を男、女で分けた散布図を作ろうとすると商品Aの男の値と女の値が二つ表示されます。 これを一つにしたいのですが…Y軸で男の値、X軸で女の値が分かるように。 素人で困っています。 積み上げ棒グラフなら可能ですが、散布図で表示したいのです。 お願いします。

  • エクセルでの2軸グラフの軸設定について

    いつもお世話になっております。 エクセルでA列に日付、B列に収支、C列に累計収支を作成して、収支で散布図(主軸)、累計収支で折れ線(第二主軸)を作成しました。 よく見るとX軸が微妙にズレているので第二横軸を表示させてみると横軸の最大値、最小値が異なっていました。 これをピッタリ合わせる事はできますか? (1)それぞれの軸の書式設定を見ると散布図(主横軸)の方はシリアル値、折れ線(第二横軸)の方は日付で設定するようになっていて、設定項目も微妙に違います。 (2)日付データは2月12日から作成していますが、散布図(主横軸)の方は1月26日から表示されています。 (3)最悪、主横軸、第二横軸共に軸の書式設定で最小値、最大値を指定すれば揃うとは思うのですが、今後データの追加、入替え等を行った時に、再度設定しなおすのは面倒です。 (4)データの選択で散布図はX軸を編集できないようになっていますがこれは仕方ない??のでしょうか? 困っています。どなたかご指導よろしくお願いします。

専門家に質問してみよう