Ở đây mình viết hàm trung bình có 1 đối số bên trong, Trungbinh(1) thì sẽ tính trung bình các số dương, trungbinh(0) thì sẽ tính trung bình các số âm.
Function TrungBinh(bol As Boolean) As Double
Dim rng As Range, arr(), i As Byte
Set rng = Application.Caller
arr = Array(rng.Offset(-3, -2).Value, rng.Offset(1, -2).Value, rng.Offset(-3, 2).Value, rng.Offset(1, 2).Value)
If bol Then
For i = LBound(arr) To UBound(arr)
If arr(i) <> 0 Then
If arr(i) > 0 Then
k = k + 1
TrungBinh = TrungBinh + arr(i)
End If
End If
Next i
Else
For i = LBound(arr) To UBound(arr)
If arr(i) <> 0 Then
If arr(i) < 0 Then
k = k + 1
TrungBinh = TrungBinh + arr(i)
End If
End If
Next i
End If
If k > 0 Then
TrungBinh = TrungBinh / k
End If
End Function
