1
我需要平滑和清潔ping數據圖表(截圖上的橙色)以提高閱讀體驗。 - 清洗:是更換1坪根據當地平均超時值,但不是很多超時sucesively - 平滑:是更換由當地平均一個小oscilating價值,但涵養突然變化的日期時間使用VBA功能清潔和平滑的Excel圖表
我需要平滑和清潔ping數據圖表(截圖上的橙色)以提高閱讀體驗。 - 清洗:是更換1坪根據當地平均超時值,但不是很多超時sucesively - 平滑:是更換由當地平均一個小oscilating價值,但涵養突然變化的日期時間使用VBA功能清潔和平滑的Excel圖表
我您的工作簿的一個新的VBA模塊中令狀這VBA代碼(Excel函數平滑),過去它和使用它在你的數據系列這樣的:
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
我的代碼搜索對標準差有最大影響的值,並排除它以計算新的本地平均值。
這是一個很好的實現了3個小區範圍內,但WARNING
更多的細胞範圍(提高平滑的影響),如果許多值對標準偏差產生重要的影響只有一個已刪除!
此代碼有效,但並不完美。你有沒有想法? – Alban
沒有。但我的桌上有牛排和椰子。感興趣? – Hugolpz