Excel需求:统计相邻非空单元格间空白单元格数并加1
解决Excel中统计非空单元格间隔(空白数+1)的问题
方法一:公式法(适合小数据量)
假设目标数据在A列,通过辅助列实现统计:
- 新增辅助列B,在B1输入公式并下拉填充,用于记录每个单元格对应的上一个非空单元格的行号:
=IF(A1<>"",ROW(),B1) - 新增结果列C,在C1输入公式并下拉填充,非空单元格位置会自动计算间隔值(空白数+1):
逻辑说明:当当前单元格非空时,用当前行号减去上一个非空单元格的行号,得到的数值就是两个非空之间的空白单元格数量加1。=IF(A1<>"",IF(ROW()>1,ROW()-OFFSET(B1,-1,0),""),"")
方法二:VBA脚本法(适合大数据量)
如果数据行数较多,用VBA批量处理更高效:
Sub CalculateNonEmptyGap() Dim lastRow As Long Dim prevNonEmptyRow As Long Dim i As Long lastRow = Cells(Rows.Count, "A").End(xlUp).Row prevNonEmptyRow = 0 ' 初始化上一个非空单元格行号 For i = 1 To lastRow If Cells(i, "A").Value <> "" Then If prevNonEmptyRow <> 0 Then ' 计算间隔并写入结果列C Cells(i, "C").Value = i - prevNonEmptyRow End If prevNonEmptyRow = i ' 更新上一个非空单元格行号 End If Next i End Sub
使用步骤:
- 按下
Alt+F11打开VBA编辑器 - 插入新模块,粘贴上述代码
- 点击运行按钮,结果会自动写入C列
效果示例
若A列数据如下:
数值1
(空白)
(空白)
数值2
(空白)
数值3
则C列对应结果为:数值2的位置显示3(2个空白+1),数值3的位置显示2(1个空白+1),完全匹配需求效果。
内容的提问来源于stack exchange,提问作者Zihan ZHANG
相关产品推荐
相关产品推荐

