0

I want to have a formula that calculates the sum of a given range.

Say I have 1,5 in cell A1. I want a formula to calculate 1+2+3+4+5. And maybe in a more advanced fashion, I would like to enter 1,5;6,3;1,4;... and have it calculate (1+2+3+4+5)+(6+5+4+3)+(1+2+3+4).

There won't be any negative numbers.

Is this somehow possible in Excel? For the range 6,3, it's probably easiest to get the lower number and count up to 6.

4

3 に答える 3

3

これは、あなたが望むことをするユーザー定義関数です。マイナスにも効きます。エラー チェックはありません。たとえば、セル内の文字、セミコロン間の複数のコンマ (いずれにせよ最初のコンマは #VALUE エラーを生成します)。

ワークブックまたはアドインのモジュールにこの関数を入力します。

Function AddSubstringProgressions(CellContent As String)
Dim Progressions As Variant
Dim Progression As Variant
Dim i As Long, j As Long
Dim Total As Long
Dim Stepwise As Long

Progressions = Split(CellContent, ";")
For i = LBound(Progressions) To UBound(Progressions)
    Progression = Split(Progressions(i), ",")
    If Val(Progression(LBound(Progression))) > Val(Progression(UBound(Progression))) Then
        Stepwise = -1
    Else
        Stepwise = 1
    End If
    For j = Progression(LBound(Progression)) To Progression(UBound(Progression)) Step Stepwise
       Total = Total + j
    Next j
Next i

AddSubstringProgressions = Total
End Function

次のように呼び出します。

ここに画像の説明を入力

于 2012-07-21T15:51:52.093 に答える
1

ワークシート関数アプローチの場合、次のいずれかを試すことができます。

  1. 基本的なケース例: A1 =1,5または6,3

    =SUMPRODUCT(ROW(INDIRECT(SUBSTITUTE(A1,",",":"))))
    
  2. 一般的なケース、例えば A1 = 1,5;6,3;1,4.

    名前を定義し、次のA =EVALUATE("{"&A1&"}")ように入力します。

    =SUMPRODUCT(ABS(MMULT(A^2,{1;-1}))/2+A)/2
    

更新します。上記の方法に基づく短い VBA udf...

Function SumSeries(Val As String)
SumSeries = Evaluate("SUM(ABS(MMULT({" & Val & "}^2,{1;-1}))/2+{" & Val & "})/2") 
End Function
于 2012-07-21T16:51:23.110 に答える
0

これが私が思いついたものです:

Sub addRange()
    Dim cell As Range
    Dim count As Integer
    count = Application.WorksheetFunction.CountA(Range("A:A"))
    Dim i As Integer
    i = 1
    Do While i <= count
        Dim low As Integer
        Dim high As Integer
        low = Mid(Range("A" & i), 1, Application.WorksheetFunction.Search(",", Range("A" & i)) - 1)
        high = Mid(Range("A" & i), Application.WorksheetFunction.Search(",", Range("A" & i)) + 1, Len(Range("A" & i)))
        If (low > high) Then
            Dim copy As Integer
            copy = low
            low = high
            high = copy
        End If
        Range("B" & i) = adder(low, high)
        i = i + 1
    Loop
End Sub

Function adder(low As Integer, high As Integer) As Integer
    Dim sum As Integer
    sum = 0
    Do While low <= high
        sum = sum + low
        low = low + 1
    Loop
    adder = sum
End Function

これは、セル A1:An に 、 、 などの2,56,4があることを前提としています。1,8より高度な機能であると説明したような値では機能しません2,5;6,4が、基本的な機能では機能します。

于 2012-07-21T15:58:21.640 に答える