• ベストアンサー

エクセルの散布図で選択しているポイント値取得

エクセルで散布図をX軸=時間, Y軸=ある値で作成しています。 グラフ上の点を2度クリックすると点が選択できますが、この状態で選択されている 点のX(=時間)をマクロで取得することは可能でしょうか? 目的は『グラフ上で選択している点を選択し、その前後数秒に含まれる点のY値の平均値算出 』を自動化するためです。 ちなみに、点を選択した状態でデバッグモードでマクロを動かし、 Selection (Type Pointでした)のプロパティの中身を見てみましたがX値やY値だと思われる値を見つけることができませんでした。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>点のX(=時間)をマクロで取得することは可能でしょうか? Sub test()   If TypeName(Selection) = "Point" Then     With Selection       .ApplyDataLabels ShowCategoryName:=True       MsgBox .DataLabel.Text       .HasDataLabel = False     End With   End If End Sub こんな感じでDataLabelを一旦表示させて取ります。 >その前後数秒に含まれる点のY値の平均値算出.. 微妙に意図が違うかもしれませんが、 以下は前後『数秒』ではなく前後の要素数の平均を取るサンプルです。 Sub test2()   Const g As Long = 5 '前後の要素数   Dim s  As String  'DataLabel.Name文字列   Dim v  As Variant '系列のy値   Dim idx As Long   '選択した要素のindex   Dim mn As Long   '前要素index   Dim mx As Long   '後要素index   Dim i  As Long   'Loopカウンタ   Dim sum As Double  '集計用   If TypeName(Selection) = "Point" Then     With Selection       .HasDataLabel = True       s = .DataLabel.Name       .HasDataLabel = False       v = .Parent.Values     End With     idx = Val(Mid$(s, InStrRev(s, "P") + 1))     mn = Application.Max(1, idx - g)     mx = Application.Min(UBound(v), idx + g)     For i = mn To mx       sum = sum + v(i)     Next     MsgBox "要素 " & idx & vbLf & mn & " - " & mx & vbLf & _         "Ave. " & sum / (mx - mn + 1)   End If End Sub

1000gou
質問者

お礼

回答ありがとうございます。 ご教授いただいた『test2()』を少し変更するだけで、意図するマクロが作成できそうです。 また、『test()』ですが私の環境(Excel2000)では、 .ApplyDataLabels ShowCategoryName:=Trueのところでコンパイルエラーが発生したため、 http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.point.applydatalabels%28v=Office.11%29.aspx を参考に、以下に変更することで実行できました。 .ApplyDataLabels Type:=xlDataLabelsShowLabel ありがとうございました。

関連するQ&A

  • エクセル2000 散布図

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

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

    エクセル、散布図のついての質問です。    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の値」を選択 し直す(あるいは最初から選択する)方法は分かっています。 ただ、データ数が多い場合、ひとつひとつ変更していくのが煩雑な ので一気に変更できる機能がないかと思いまして・・。 ご教授願います。

  • excelの散布図のスムージングについて

    excelの散布図でスムージング機能がありますが、スムージングで引かれた曲線の座標を求めることは出来ないのでしょうか? X軸の値もしくはY軸の値を指定するとそれぞれY軸、X軸が帰ってくるような関数、マクロなどは無いのでしょうか? HELPを探したのですが上手く見つかりませんでした。 そもそも、求めることは不可能なんでしょうか? ちなみに、excel95,97,2000を使っています。

  • エクセルの散布図で

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

  • 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はブランクですが  その他は全てデータが埋まっております。 以上の説明でお分かりいただけるか不安です。。。 もし不明な点がありましたらすぐ回答いたします。 お手数をおかけしますが ご回答の程よろしくお願いいたします。

  • Excelの使い方について(グラフ、散布図)

    散布図(平滑線)を利用してグラフを書きたいのですが、複数のデータを簡単にグラフ化するにはどのようにしたらよいのでしょうか? 毎回、データの選択>追加>マウス操作がめんどうで・・・ たとえばX軸が0~100で固定でYの値の変化を見たい場合(一つ目は100~400、二つ目は120~450・・・のように)どのようにすればよいのでしょうか? ご回答よろしくお願いします。

  • Excelでグラフ選択中の判定はできますか?

    過去に、フォームで無理やり判定をした経緯はあります。 目的は、選択グラフのX軸とY軸の範囲を右クリックせずにマクロでできないか?ということです。 右クリックだとX軸とY軸の個々について設定する必要がありますよね、それを一度で済ませられないかという希望です(設定にはフォームを使用する予定)。 それ以前の段階で、選択中のシートにあるグラフを選んでいるかどうかの判定をしたいのですが、どの値から判定できますか? セルを選択した状態の"Selection.Name"では値を取得できません、言葉足らずは補足いたしますのでよろしくお願いいたします。

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

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

  • エクセルで散布図をつくったとき

    散布の点にマウスカーソルを合わせたときに点の名前が出るように したいんです。  X Y A 30 40 B -30 -40 C -39 29 があったとき、 数字の部分だけ選択してグラフにするとABCの名前が出ないです。 でABCと数字をまとめて選択すると、変なグラフになりました。 どんな風にしたらいいですか?

  • エクセル 複数系列の散布図グラフの書き方について

    下記のようなデータを、一気に散布図でグラフ化(データ間は線で結びたい、つまり1個のグラフ中に100本の線ができている状態)したいのですが、やり方がわからず困っています。 (X1とY1、X2とY2、・・・、X100とY100が対応) X1に対してY1というように、一つ一つ、系列を追加していけばできるのはわかるのですが、データが多いのでそれでは時間がかかりすぎてしまいます。どなたか時間をかけずに一気にグラフ化する方法をご存知であれば、おしえていただけないでしょうか。 <X軸> X1: 2 8 10 3 X2: 3 21 29 40 ・ ・ X100:4 9 10 18 <Y軸> Y1: 1 4 5 2 Y2: 2 8 19 4 ・ ・ Y100:14 9 2 30

専門家に質問してみよう