Tính trung bình hội tụ

Liên hệ QC

thanhlp2007

Thành viên thường trực
Tham gia
24/10/07
Bài viết
201
Được thích
11
Nhờ các anh chị giúp xem có hàm nào tính trung bình hội tụ mà không phải qua từng bước không ?
Mình xin gửi file đính kèm
 

File đính kèm

Nhờ các anh chị giúp xem có hàm nào tính trung bình hội tụ mà không phải qua từng bước không ?
Mình xin gửi file đính kèm
Tôi nghĩ chắc cái này không tính bằng công thức được. Nếu bạn muốn dùng hàm tự tạo thì có thể dùng cái này:
PHP:
Function TrungBinhHoiTu(ParamArray Args() As Variant) As Double
Dim Arr1() As Variant, Arr2() As Variant, Arg As Long, i As Long, Item As Variant
    For Arg = LBound(Args) To UBound(Args)
        For Each Item In Args(Arg)
            i = i + 1
            ReDim Preserve Arr1(1 To i)
            Arr1(i) = Item
        Next
    Next
    Do Until UBound(Arr1) = 1
        ReDim Arr2(1 To Int(UBound(Arr1) / 2))
        For i = 1 To UBound(Arr2)
            If (UBound(Arr1) Mod 2) And i = UBound(Arr2) Then
                Arr2(i) = (Arr1(i * 2 - 1) + Arr1(i * 2) + Arr1(i * 2 + 1)) / 3
            Else
                Arr2(i) = (Arr1(i * 2 - 1) + Arr1(i * 2)) / 2
            End If
        Next
        Arr1 = Arr2
    Loop
TrungBinhHoiTu = Arr1(1)
End Function
 

File đính kèm

Một cách gần tương tự với bạn Hửu Thắng nhưng dùng đệ qui
PHP:
Function ConvAve(byVal sArray) As Double
  Dim i As Long, j As Long, Arr1(), Arr2(), Item
  For Each Item In sArray
    i = i + 1: ReDim Preserve Arr1(1 To i)
    Arr1(i) = Item
  Next
  If UBound(Arr1) <= 3 Then
    ConvAve = WorksheetFunction.Average(Arr1)
  Else
    For i = 1 To 2 * Int(UBound(Arr1) / 2) - 1 Step 2
      j = j + 1: ReDim Preserve Arr2(1 To j)
      If UBound(Arr1) - i = 2 Then
        Arr2(j) = (Arr1(i) + Arr1(i + 1) + Arr1(i + 2)) / 3
      Else
        Arr2(j) = (Arr1(i) + Arr1(i + 1)) / 2
      End If
    Next
    ConvAve = ConvAve(Arr2)
  End If
End Function
----------------------------------------
Nhưng mà xem ra vẫn có cái chưa ổn (Nó nằm ở chổ chia 2 và chia 3)
Theo lý thì hàm AVERAGE khi tính trung bình giữa số 12 và 1 giá trị rổng, nó sẽ cho kết quả = 12! Trong nếu tính theo kiểu cộng lại và chia 2 thì lại ra 6
Hic...
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom