2012-01-05 619 views
4

我需要對一個雙精度數組中的元素的子集求和。作爲一個簡單的例子 考慮10個元素的陣列:使用vb6中的SUM函數對數組中的元素進行求和

Dim Array(1 To 10) As Double 

,其中每個元素被分配某個值。在VB中是否有一個函數會對前5個元素進行求和?顯然這可以使用循環來解決,但是有沒有一種解決方案?我想保持我的代碼收斂。我試過使用SUM但沒有成功。

謝謝!

+0

您可以指定您使用的是vb6還是vb.net?在vb.net和framework 3.5的情況下,您可以使用Linq在「接收」前5項後進行求和。 – Aphelion 2012-01-05 11:43:07

+0

我剛剛編輯過我的帖子:我正在使用vb6 – Wawel100 2012-01-05 11:47:23

+0

如果您的目的是重複使用代碼,您可能需要創建自己的方法來實現Take和Sum方法。 – Aphelion 2012-01-05 11:52:48

回答

3

沒有,沒有內置在總結中VB6,你想要什麼功能,但你可以隨便寫一個:

Public Function SumRange(ByRef dblArray() As Double, Optional ByVal StartRange As Long = -1, Optional ByVal Length As Long = -1) 

    '-1 on StartRange indicates start at low bound 
    If StartRange = -1 Then 
     StartRange = LBound(dblArray) 
    End If 

    '-1 on Length indicates to span all elements to the end of the array 
    If Length = -1 Then 
     Length = UBound(dblArray) - StartRange - 1 
    End If 

    Dim dTotal As Double 
    Dim lNdx As Long 

    For lNdx = StartRange To StartRange + Length - 1 
     dTotal = dTotal + dblArray(lNdx) 
    Next lNdx 

    SumRange = dTotal 

End Function 

請注意,我沒有sytaz檢查這一點,所以看錯別字。它可以用來如下:

dResult = SumRange(myArray) 'summ all 

dResult = SumRange(myArray, 3) 'sum all starting at offset 3 

dResult = SumRange(myArray, , 2) 'sum the the first 2 elements 

dResult = SumRange(myArray, 2, 4) 'sum a range start at 2 and with length of 4 

您可以修改採取另一種可選的布爾來指定,如果你可以容忍(忽略)出界外的方法。現在,如果您要求總結比數組中存在的更多元素,則會發生錯誤。

相關問題