2016-12-05 70 views
1

我需要平滑和清潔ping數據圖表(截圖上的橙色)以提高閱讀體驗。 - 清洗:是更換1坪根據當地平均超時值,但不是很多超時sucesively - 平滑:是更換由當地平均一個小oscilating價值,但涵養突然變化的日期時間使用VBA功能清潔和平滑的Excel圖表

Ping/BandWith

回答

1

我您的工作簿的一個新的VBA模塊中令狀這VBA代碼(Excel函數平滑),過去它和使用它在你的數據系列這樣的:

enter image description here

Public Function Smoothing(ByVal Values As range) 
' il faudrait plutot chercher les valeurs aberante et les retirer 
    AverageAvec = Application.Average(Values) 
    EcartTypeAvec = Application.StDevP(Values) 
    EcartTypeRef = EcartTypeAvec 
    Smoothing = AverageAvec 

    For Each cell In Values 
     AverageSans = Application.Average(SetDifference(Values, cell)) 
     EcartTypeSans = Application.StDevP(SetDifference(Values, cell)) 
     If EcartTypeSans < EcartTypeRef Then 
      EcartTypeRef = EcartTypeSans 
      If EcartTypeAvec > EcartTypeRef * 1.3 Then 
       Smoothing = AverageSans 
      End If 
     End If 
    Next 
End Function 

Function SetDifference(ByVal Rng1 As range, ByVal Rng2 As range) As range 
On Error Resume Next 

If Intersect(Rng1, Rng2) Is Nothing Then 
    'if there is no common area then we will set both areas as result 
    Set SetDifference = Union(Rng1, Rng2) 
    'alternatively 
    'set SetDifference = Nothing 
    Exit Function 
End If 

On Error GoTo 0 
Dim aCell As range 
For Each aCell In Rng1 
    Dim Result As range 
    If Application.Intersect(aCell, Rng2) Is Nothing Then 
     If Result Is Nothing Then 
      Set Result = aCell 
     Else 
      Set Result = Union(Result, aCell) 
     End If 
    End If 
Next aCell 
Set SetDifference = Result 

End Function 

我的代碼搜索對標準差有最大影響的值,並排除它以計算新的本地平均值。

Orange is Smoothed

這是一個很好的實現了3個小區範圍內,但WARNING更多的細胞範圍(提高平滑的影響),如果許多值對標準偏差產生重要的影響只有一個已刪除!

+0

此代碼有效,但並不完美。你有沒有想法? – Alban

+0

沒有。但我的桌上有牛排和椰子。感興趣? – Hugolpz