VBA 分割求平均值

Function StrToArr(str As String, delimiter As String) As Variant

Dim ar, nar()
If (Trim(str) = "") Then
    ReDim nar(0)
    StrToArr = nar
    GoTo EndR
End If

ar = Split(str, delimiter)

ReDim nar(UBound(ar))
For i = LBound(ar) To UBound(ar)
    nar(i) = CDbl(ar(i))

Next
EndR:
StrToArr = nar ' Application.Average(nar) ' nar

End Function
Function ArrAVG(arr1 As Variant, arr2 As Variant, arr3 As Variant, arr4 As Variant) As Double

Dim Narr, AArr(3)
Dim index, count As Integer
count = UBound(arr1) + UBound(arr2) + UBound(arr3) + UBound(arr4) + 4

ReDim Narr(count)
AArr(0) = arr1
AArr(1) = arr2
AArr(2) = arr3
AArr(3) = arr4
index = 0

For i = 0 To 3
    For j = LBound(AArr(i)) To UBound(AArr(i))
        If (CDbl(AArr(i)(j)) <> 0) Then
            Narr(index) = CDbl(AArr(i)(j))
            index = index + 1
        End If
    Next

Next


ArrAVG = Application.Average(Narr)
End Function
Function Get4AVG(s1 As String, s2 As String, s3 As String, s4 As String) As Double
Debug.Print s1


Dim d As String
d = "/"
Get4AVG = ArrAVG(StrToArr(s1, d), StrToArr(s2, d), StrToArr(s3, d), StrToArr(s4, d))


End Function


Sub test()
c = StrToArr("4.10/3.87/3.74", "/")
'Debug.Print c
d = Get4AVG("4.10/3.87/3.74", "4.08/3.88/3.78", "", "4.09/3.90/3.79")
Debug.Print d

End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值