重复循环直到空单元格

时间:2011-04-03 12:53:30

标签: excel worksheet-function

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

第一行包含公式(包括值X)。 以下行每个包含3个单元格(A,B,C),其中包含值。 它是简单的真/假(“= IF(AND(X> = A2; X <= B2); C2; 0)),它检查'X'&gt;是否高于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.

3 个答案:

答案 0 :(得分:1)

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

对于整个列(如果在第一个空白行之后没有任何内容):

=SUMIFS(C:C, A:A, "<" & X , B:B ,">" & X)   

注意:X是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)

答案 1 :(得分:0)

我现在不在电脑前(带excel)。

我知道有一个select current region(我认为它映射到 Ctrl - / ?)你应该可以用它来检测连续区域的末尾。如果只想要一列,请使用Range.Intersect限制列(例如,列D的“$ D:D”)。

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

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

答案 2 :(得分:0)

如果你不确定会有多少行,那么你可能最好写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