求统计指定区域内两个AAA之间空白单元格的Excel公式
解决Excel统计两"AAA"间空白单元格的问题
适用场景
统计第一行中每两个"AAA"之间的空白单元格数量,第二行每个单元格均输出对应统计值(包括"AAA"所在单元格,输出0)。
方案1:Excel 365/2021(支持动态数组)
直接在第二行第一个单元格(如A2)输入以下公式,公式会自动向右溢出填充所有结果:
=LET( rng, A1:X1, positions, FILTER(SEQUENCE(COLUMNS(rng)), rng="AAA"), result, MAP(SEQUENCE(COLUMNS(rng)), LAMBDA(col, IF(rng[col]="AAA", 0, LET( prev, XLOOKUP(col, positions, positions, 0, 1), next, XLOOKUP(col, positions, positions, COLUMNS(rng)+1, -1), COUNTBLANK(INDEX(rng, 1, prev+1):INDEX(rng, 1, next-1)) ) ) )), result )
公式逻辑:
- 用
FILTER定位所有"AAA"在第一行的列位置 - 用
MAP遍历每一列:- 若当前列是"AAA",直接返回0
- 否则用
XLOOKUP找到当前列前后最近的"AAA"位置,统计两者之间的空白单元格数
方案2:旧版Excel(不支持动态数组)
在第二行第一个单元格(如A2)输入以下数组公式,按Ctrl+Shift+Enter确认后,向右填充至目标列:
=IF(A1="AAA",0,COUNTBLANK(INDEX($1:$1,1,MAX(IF($A$1:A$1="AAA",COLUMN($A$1:A$1),0))+1):INDEX($1:$1,1,MIN(IF(A$1:$X$1="AAA",COLUMN(A$1:$X$1),COLUMN($X$1)+1))-1)))
公式逻辑:
- 用
MAX(IF(...))找到当前列左侧最近的"AAA"列位置 - 用
MIN(IF(...))找到当前列右侧最近的"AAA"列位置 - 统计这两个位置之间的空白单元格数,若当前列是"AAA"则返回0
为什么COUNTBLANK/COUNTA无效?
这两个函数仅能统计固定区域的空白/非空白单元格,但你的需求需要动态识别每两个"AAA"之间的可变区间,必须结合列位置查找函数(如XLOOKUP、IF+MAX/MIN)来定位统计范围,才能实现需求。
注意事项
- 确保第一行的"AAA"为纯文本,无多余空格或格式差异
- 若第一行开头无"AAA",公式会统计从行首到第一个"AAA"之间的空白;若结尾无"AAA",会统计最后一个"AAA"到行尾的空白
内容的提问来源于stack exchange,提问作者Zihan ZHANG
相关产品推荐
相关产品推荐

