在一个单元格中获取范围的总和

我想有一个计算给定范围的总和的公式。

说我在单元格A11,5 。 我想要一个公式来计算1+2+3+4+5 。 也许以更高级的方式,我想input1,5;6,3;1,4;...并且计算(1+2+3+4+5)+(6+5+4+3)+(1+2+3+4)

不会有任何负数。

在Excel中这是不可能的吗? 对于范围6,3 ,可能最容易得到较低的数字,并计数到6。

这是一个用户定义的function ,可以做你想做的。 它也适用于底片。 没有错误检查,例如对于单元格中的字母,分号之间的多个逗号(第一个会生成#VALUE错误)。

在工作簿的模块或插件中input此函数:

 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 

像这样调用它:

在这里输入图像说明

对于工作表函数方法,您可以尝试以下方法之一:

  1. 基本情况,例如A1 = 1,56,3

     =SUMPRODUCT(ROW(INDIRECT(SUBSTITUTE(A1,",",":")))) 
  2. 一般情况下,例如A1 = 1,5;6,3;1,4

    定义名称A =EVALUATE("{"&A1&"}") ,然后input:

     =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 

以下是我想到的:

 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中有像6,4和其他值。 它不适用于2,5;6,4这样的值2,5;6,4正如你所描述的那样,它是更高级的function,但是它为基本的function完成了工作。