如何在Excel/Google Sheets中统计相邻非空单元格数量
问题说明
- 使用Excel/Google Sheets处理表格时,部分行的非空单元格之间夹杂空白单元格,需要按从左到右顺序统计连续相邻的非空单元格数量
- 直接使用
COUNTA(A2:F2)仅能计算区域内所有非空单元格的总个数,无法识别空白单元格的分隔作用,返回结果不符合预期 - 自定义计数预期效果与传统COUNTA函数结果对比如下:

实现公式
根据所用软件版本选择对应公式即可,若统计范围不是A2:F2,将公式中所有A2:F2替换为实际统计的行区域即可。
Excel 365/2021及以上版本、Google Sheets
统计整行最长连续相邻非空单元格数量
在结果单元格输入以下公式按回车即可:
=MAX(SCAN(0,A2:F2,LAMBDA(a,b,IF(b<>"",a+1,0))))
逻辑说明:SCAN从左到右遍历范围内的每个单元格,遇到非空单元格时累计计数+1,遇到空白单元格则将计数器重置为0,最后用MAX提取遍历过程中的最大计数值,即为最长连续非空单元格数。
如果需要逐列返回每个位置对应的连续计数(遍历到当前单元格时,往前连续的非空单元格个数),去掉公式外层的MAX即可:
=SCAN(0,A2:F2,LAMBDA(a,b,IF(b<>"",a+1,0)))
该公式为数组公式,会自动溢出匹配统计范围长度的结果,无需手动拖拽填充。
Excel 2019及更早版本
旧版Excel不支持LAMBDA类函数,可使用以下数组公式统计整行最长连续非空数,输入完成后需按Ctrl+Shift+Enter三键确认数组计算:
=MAX(FREQUENCY(IF(A2:F2<>"",COLUMN(A2:F2)),IF(A2:F2="",COLUMN(A2:F2))))
逻辑说明:先分别提取非空单元格、空白单元格对应的列号,再通过FREQUENCY统计列号的频率分布得到每段连续非空单元格的长度,最后用MAX提取最大值即可。
内容的提问来源于stack exchange,提问作者Nicolas741
相关产品推荐
相关产品推荐

