自动改变countif范围

我使用这个公式来计算最近30天的红色字,但是在底部添加新行时,范围不会改变。

如何更改公式,以便在底部添加新行时自动调整范围? 要检查的行数总是30。

=COUNTIF(D2433:D2463, "Red") 

使用以下内容:

 =COUNTIF(OFFSET($D$2433,0,0,30,1),"Red") 

您使用的$ D $ 2433至$ D $ 2463的参考值为31,如果您需要在上述公式中更改31至31
偏移量将以$ D $ 2433开始,并在同一列中向下计数
如果红色,Countif会计数

更新
如果在D列中只插入要计数的数据,则可以使用:

 =COUNTIF(OFFSET(INDIRECT("$D$"&MAX(IF($D:$D<>"",ROW($D:$D),0))),0,0,-30,1),"Red") 

这是一个数组公式,按Ctrl + Shift + Enter而不是Enter
新的公式将find列D中的最后一个非空行,间接将自动更正公式

另一种技术是使用dynamic命名范围

  1. Formula > Name Manager > New :先给一个名称,然后在Referes to字段中插入以下公式。 也看到图片。

=INDEX(Sheet1!A:A,1):INDEX(Sheet1!A:A,INDEX(MAX((Sheet1!$A:$A<>"")*(ROW(Sheet1!A:A))),0))

这应该给你一个范围像$A$1:$A$300取决于最后一个非空单元格的位置。

  1. 现在在你想要评估的单元格中,添加这个公式:

=COUNTIF(rng,"red")

请注意, rng是您应该更改为您要使用的名称的命名范围。

这将find最后一个单元格,甚至为空白单元格工作。 如果您有任何问题,请尝试让我知道。

在这里输入图像说明

您需要一个相对单元格引用。 你可以用这个做

 =OFFSET() 

function。

 =COUNTIF(INDEX(D:D,AGGREGATE(14,6,ROW(D:D)/--((D:D)<>""),1)-30):INDEX(D:D,AGGREGATE(14,6,ROW(D:D)/--((D:D)<>""),1)),"Red") 

条件:

最后一行下面的所有行必须是空白最后30行内不能有任何空白行,否则您的计数可能会closures。

这是一个像函数一样的数组。 如果使用全范围引用,则每次聚合函数引用完整列范围时,都会检查1048576个单元格。 因此,如果你使用公式很多,你可能会陷入困境,如果你只用了几次,你可能会好起来的。