VBA-自定义函数循环

VBA-自定义函数循环,vba,loops,excel,Vba,Loops,Excel,我是vba新手,需要帮助在Excel 2010中创建自定义函数。我需要一个自定义函数,因为我的范围会改变 我的数据如下: 25 35 45 -5 50 -10 0 -5 50 -60 10 40 我需要创建一个函数来循环每个单元格。如果前两个单元格的总和>=0,则函数应获取下一个单元格并对这三个单元格求和。当函数到达范围的末尾时,循环应该结束。如果前两个单元格的总和我可能会使用一个简单的Excel公式。。像这样: =IF(SUM(A1:B1)>0,SUM

我是vba新手,需要帮助在Excel 2010中创建自定义函数。我需要一个自定义函数,因为我的范围会改变

我的数据如下:

25   35  45  -5  
50  -10   0  -5  
50  -60  10  40  

我需要创建一个函数来循环每个单元格。如果前两个单元格的总和>=0,则函数应获取下一个单元格并对这三个单元格求和。当函数到达范围的末尾时,循环应该结束。如果前两个单元格的总和我可能会使用一个简单的Excel公式。。像这样:

=IF(SUM(A1:B1)>0,SUM(A1:B1),0)+SUM(C1:D1)
但是,如果您死心塌地地使用VBA。。试试这个:

  Public Function strange_sum(inrange As Range) As Long
     Dim total As Long
     Dim i As Integer
     i = 0
     total = 0
     For Each cell In inrange
        i = i + 1
        total = total + cell.Value
        If i = 2 And total < 0 Then total = 0
     Next cell
     strange_sum = total
  End Function
公共函数奇怪的和(范围内)一样长
总长度
作为整数的Dim i
i=0
总数=0
对于inrange中的每个单元格
i=i+1
总计=总计+单元格值
如果i=2且总计<0,则总计=0
下一个细胞
奇怪的总和=总数
端函数

嗯?目前尚不清楚具体说明是什么。你能在算法中写下规则吗?使用
A
B
C
D
作为每行的变量来表示4个值。第二行:50-10=40。这是>=0,所以我们加上最后两个单元格:40+0-5=35??你是怎么得到45分的?第三排:50-60=-10。很抱歉造成混乱。如果a+b>=0,那么求和(a,b)忽略我以前的帖子。抱歉搞混了。第2行的总数应该是35。如果a+b>=0,则移动到c;如果a+b+c>=0,则移动到d。最终结果应该是a+b+c+d。如果a+b,谢谢,同上!!这起作用了。不幸的是,我需要VBA,因为我的范围可以是4到20个变量。
  Public Function strange_sum(inrange As Range) As Long
     Dim total As Long
     Dim i As Integer
     i = 0
     total = 0
     For Each cell In inrange
        i = i + 1
        total = total + cell.Value
        If i = 2 And total < 0 Then total = 0
     Next cell
     strange_sum = total
  End Function