|
▼ichinose さん:
>▼nogu さん:
>おはようございます。
>
>>
>>色々なデータをグラフにしています。
>>グラフの種類は、散布図や折れ線です。
>>
>>データからグラフにするマクロは試行錯誤で出来ています。
>>しかしグラフを作成した後、異常がある点を元のデータから削除したいのです。
>>何故かというと異常があると他のデータのグラフのマーカーや線が見えなくなるからです。
>>
>>こんな方法はできるのでしょうか??
>>グラフ上で異常点をクリックすると元のデータがアクティブになる。
>>
>>【完成した散布図】
>>│ ×←1. この部分をクリック(Wクリック)すると
>>│
>>│
>>│ ××
>>│× ××
>>│×××
>>│××
>>│
>>└──────────
>>
>>【元のデータ】
>>青 赤 黄 緑
>>2 3 5 4
>>3 2 4 12←2.元のデータをアクティブにする
>>4 2 3 5
>>
>>異常を探す定義は特になく、グラフをかいて(視覚的にとらえて)から
>>データを削除する方法を希望としています。
>>よろしくお願いいたします。
>以下のようなコードで可能ですが、
>系列の選択後、ポイントのダブルクリックというオペレーティングに
>なってしまうので操作性がよいとは言えません。
>
>グラフは、ワークシートに貼り付けたグラフ、
>つまり、チャートオブジェクトを対象としています。
>
>Thisworkbookのモジュールに
>'========================================================
>Private WithEvents evchart As Chart
>'========================================================
>Sub set_chart()
> Set evchart = ActiveSheet.ChartObjects(1).Chart
>End Sub
>'========================================================
>Private Sub evchart_BeforeDoubleClick(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long, Cancel As Boolean)
> Dim srs As Series
> Dim srsstr As Variant
> Dim addr As Variant
> If ElementID = xlSeries Then
> Set srs = evchart.SeriesCollection(Arg1)
> srsstr = Split(edit_addr(srs.Formula, srs.PlotOrder), ",")
> addr = srsstr(UBound(srsstr))
> Application.Range(addr).Parent.Activate
> If Arg2 > 0 Then Application.Range(addr).Cells(Arg2).Activate
> End If
> Cancel = True
>End Sub
>'========================================================
>Function edit_addr(add, podr As Long) As String
> Dim idx As Long, jdx As Long
> Dim ans()
> Dim wk As Variant
> wk = Split(Replace$(Replace$(add, "=SERIES(", ""), "," & podr & ")", ""), ",")
> jdx = 1
> For idx = LBound(wk) To UBound(wk)
> If TypeName(Application.Evaluate(wk(idx))) = "Range" Then
> ReDim Preserve ans(1 To jdx)
> ans(jdx) = wk(idx)
> jdx = jdx + 1
> End If
> Next
> If jdx > 1 Then
> edit_addr = Join(ans(), ",")
> Else
> edit_addr = ""
> End If
>End Function
>
>
>対象グラフが存在するワークシートをアクティブにした状態で
>上記プロシジャーのset_chartを実行してください。
>
>実行後、グラフの変更したいプロットをダブルクリックしてください。
>当該セルがアクティブになります。
>
>確認してください。
上記のマクロで、グラフ内の異常点を
ダブルクリックすれば元DATAにとんでいきますが、
元DATAに行かず、グラフ内の異常点をダブルクリックすると
同時にグラフの元DATAから値を随時削除するには
どうしたらいいでしょうか?
要は、グラフ内に異常点が多数ある場合
テキパキDATAを削除していきたい。。。
又はもっと別に上記の内容を対応するのに
いい方法はないでしょうか。。。。
グラフ内の異常点領域をマウスで範囲指定すれば、
範囲内のDATAを全て削除できるとか・・・
膨大なDATAを扱う仕事をしており、
異常点を削除するのが大変なもので・・・
DATAのMEDIAN値・σを利用しても特異点を削除しようかと
思ったのですが、σじたいが
変動するのでなかなかいい方法がみつからないです。。。。
|
|