Excel 重复循环直到空单元格

Excel 重复循环直到空单元格,excel,worksheet-function,Excel,Worksheet Function,我正在寻找一个Excel公式,它可以添加行的结果,直到它碰到一个空单元格 第一行包含公式的一个值(包括值X)。 以下行分别包含3个单元格(A、B、C),其中包含值。 它是简单的真/假(“=IF(AND)(X>=A2;X高于A,低于B),如果为真,则返回C的值。 然后,该公式查看下一行并重复该操作,并将所有返回值添加到一个和中 ROW1 - A1(formula) ROW2 - A2(5) - B2(10) - C2(100) ROW3 - A3(10) - B3(20) - C3(200) RO

我正在寻找一个Excel公式,它可以添加行的结果,直到它碰到一个空单元格

第一行包含公式的一个值(包括值X)。 以下行分别包含3个单元格(A、B、C),其中包含值。 它是简单的真/假(“=IF(AND)(X>=A2;X高于A,低于B),如果为真,则返回C的值。 然后,该公式查看下一行并重复该操作,并将所有返回值添加到一个和中

ROW1 - A1(formula)
ROW2 - A2(5) - B2(10) - C2(100)
ROW3 - A3(10) - B3(20) - C3(200)
ROW4 - (empty)

ROW2 - If we set X=8, then 8 is > 5, and < 10, and the value 100 is returned.
ROW3 - The action is repeated - this time with the result 0.
ROW4 - The row/cell is empty and the loop stops.
ROW1 - Formula has stopped and shows result (100 + 0 =) 100.
ROW1-A1(公式)
第2行-A2(5)-B2(10)-C2(100)
第3行-A3(10)-B3(20)-C3(200)
第4行-(空)
第2行-如果我们设置X=8,那么8大于5,小于10,返回值100。
第3行-重复操作-这次结果为0。
第4行-行/单元格为空,循环停止。
第1行-公式已停止并显示结果(100+0=)100。
我现在不在电脑前(用excel)

我知道有一个
选择当前区域
(我想它被映射到了Ctrl-/?)您应该能够使用它来检测连续区域的端点。如果您只需要该区域的一列,请使用Range.Intersect来限制为一列(例如,对于D列,使用“$D:D”)

这将利用Excel的强大功能,而不是自己编写代码


查看命名范围(插入/Name,F3以在公式编辑器中选择命名范围)。IIRC您可以拥有“动态”范围(例如:自动检测连续区域)在一个名称下。我必须尝试如何工作,以提供更多详细信息

如果您不确定将有多少行,那么您最好编写vba,在单元格中循环,直到找到一个空的行

myValue = 8
searchRow = 2
Total = 0
Do While Cells(searchRow, 1).Value <> ""
  If (myValue > Cells(searchRow, 1).Value And myValue < Cells(searchRow, 2).Value) Then
    Total = Total + Cells(searchRow, 3).Value
  End If

searchRow = searchRow + 1
Loop

Cells(1, 1).Value = Total
myValue=8
searchRow=2
总数=0
Do While单元格(searchRow,1)。值“”
如果(myValue>单元格(searchRow,1).Value和myValue<单元格(searchRow,2).Value),则
总计=总计+单元格(搜索行,3)。值
如果结束
searchRow=searchRow+1
环
单元格(1,1)。值=总计

这正是他们创建SUMIFS工作表函数的原因

对于整列(如果第一个空行后没有内容):

=SUMIFS(C:C,A:A,“&X)
注:X是X所在的单元

如果在第一个空行之后确实有内容,则以下操作将起作用:

=SUMIFS(C:C, A:A, "<" & X , B:B ,">" & X)   
=SUMIFS(INDIRECT("C2:C" & MATCH(TRUE,INDEX(ISBLANK(A:A),0,0),0)-1),
        INDIRECT("A2:A" & MATCH(TRUE,INDEX(ISBLANK(A:A),0,0),0)-1),"<" & M1,
        INDIRECT("B2:B" & MATCH(TRUE,INDEX(ISBLANK(A:A),0,0),0)-1),">" & M1)
=SUMIFS(间接(“C2:C”)和匹配(真,索引(ISBLANK(A:A),0,0),0)-1),
间接(“A2:A”和匹配(TRUE,索引(ISBLANK(A:A),0,0),0)-1),”和M1)

很抱歉,我没有说得足够清楚-循环必须先运行50行或更多行,然后才能到达空单元格/行。此代码将一直执行,直到遇到A列中的第一个空单元格,因此无论您需要计算多少行,我都非常期待测试您的代码。同时,我还有我自己发现是SUMIFS函数解决了我的问题,而不是一个循环宏。由于我不知道如何使它重复到空单元格,我只是定义它来检查单元格范围'=SUMIFS(N50:N122;L50:L122;“=201201”)“@Bellman,我现在在我的机器上,看起来最后两个公式不起作用,所以我必须处理它们。@Bellman,好的,我已经用一个工作公式替换了它们,可以进一步修改以使其更灵活,但是如果你的范围从未改变,那么我会像你那样进行编码。