提问人:ImFabien75 提问时间:11/15/2023 最后编辑:JvdVImFabien75 更新时间:11/15/2023 访问量:48
使用的动态范围 Excel
Dynamic Range used Excel
问:
我有一系列的列 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)
但它不起作用:(
有人可以帮助我吗? 谢谢
答:
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 的帖子)。
评论