2012-01-05 30 views
4

2倍の配列の要素のサブセットを合計する必要があります。vb6のSUM関数を使用して配列の要素を合計する

各要素は、いくつかの値が割り当てられている
Dim Array(1 To 10) As Double 

:簡単な例として、10個の要素のアレイを考える 。最初の5つの要素を合計するVBの関数はありますか?明らかに、これはループを使用して解決できますが、1行の解決策はありますか?私はコードを守っていきたいと思います。私はSUMを使用しようとしましたが、成功しませんでした。

ありがとうございます!

+0

vb6またはvb.netのどちらを使用しているかを指定してください。 vb.netとフレームワーク3.5の場合、Linqを使用して最初の5つのアイテムを「取った」後に合計することができます。 – Aphelion

+0

私はちょうど私の投稿を編集しました:私はVB6を使用しています – Wawel100

+0

コードを再利用することを目的としている場合は、TakeメソッドとSumメソッドを実装する独自のメソッドを作成することができます。 – Aphelion

答えて

3

はいいえ、あなたは何をしたいんVB6で関数を合計でそこに内蔵されていないが、あなたは簡単に1を書き込むことができます。

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 

あなたが容認するかどうかを指定するために、別のオプションのブール値を取る(無視)範囲外のための方法を変更することができます。現在、配列に存在する要素よりも多くの要素を合計するように要求した場合、エラーが発生します。

関連する問題