使用的动态范围 Excel

Dynamic Range used Excel

提问人:ImFabien75 提问时间:11/15/2023 最后编辑:JvdVImFabien75 更新时间:11/15/2023 访问量:48

问:

我有一系列的列 A 编号,从 A1 到 A100,从 1 到 9

现在我想计算数字 1 出现的次数,这很容易:

=COUNTIF(A1:A100;1)

第二步,我只想指望最后 12 个值,仍然很容易:

=COUNTIF(A89:A100;1)

第三步,我想动态化它,因为当我在单元格 A101 上添加一个新值时,公式会自动更改,如下所示:

=COUNTIF(A90:A101;1)

我已经设法获得了这样的填充单元格的数量:

=COUNTIF(A:A;"<>"&"")

所以从理论上讲,我会做这样的事情:

=COUNTIF("A"& (COUNTIF(A:A;"<>"&"")-11) & ":A" & COUNTIF(A:A;"<>"&"");1)

但它不起作用:(

有人可以帮助我吗? 谢谢

Excel 公式 动态 范围

评论


答:

2赞 JvdV 11/15/2023 #1

有趣的问题。而不是 ,使用以下内容:COUNTIF()

=SUM(--(TAKE(TOCOL(A:A,3),-12)=1))

这意味着:

  • TOCOL(A:A,3)- 从A:A列中删除所有空单元格,并返回仅包含所有值的数组;
  • TAKE(<Step1>,-12)- 返回最后 12 个值;
  • SUM(--(<Step2>=1))- 检查这些最后值中任何一个等于 1 的频率,并使用双元一元将布尔值转换为 1/0,以便能够将结果汇总到一个总数中。

如果您无法访问这些新的 DA 函数,请尝试使用半易失性结构来创建感兴趣的范围:INDEX()

=COUNTIF(INDEX(A:A,COUNT(A:A)-11):INDEX(A:A,COUNT(A:A)),1)
2赞 Black cat 11/15/2023 #2

COUNTA 直接对非空单元格进行计数。

生成的结果是文本,因此必须使用 INDIRECT 将其转换为范围。

=COUNTIF(INDIRECT("A"& (COUNTA(A:A)-11) & ":A" & COUNTA(A:A));1)

评论

1赞 P.b 11/15/2023
虽然这是一个可行的解决方案,但我的建议是除非必要,否则不要使用 INDIRECT。如果它是你所指的固定范围,你总是可以使用INDEX创建相同的逻辑,使其非易失性。可变函数,例如 OFFSET、INDIRECT 将在文件内的任何更改时重新计算,并且通常有很好的替代方案(例如 JvdV 的帖子)。