我的数据如下所示。我想计算连续的空白单元格,除了开头和结尾的空白单元格。我的逻辑是返回最大值。对于下面的情况,返回值应该是 2,而不是 5。
2 回答
0
您可以使用以下标准通过公式执行此操作:
- IsBlank(cell) :单元格本身应该是空白的。
- IsBlank(cell.Offset(0,-1)) :左边的单元格应该是空白的(为了不计算系列的开头)
- IsBlank(cell.Offset(0,1)) :右边的单元格应该是空白的(为了不计算系列的结尾)
- cell.Col <> 1 :为了不计算工作表的开头
- IsBlank(cell.Offset(-1,1)) :为了不计算最右边的空白单元格
于 2020-06-01T15:23:06.990 回答
0
对于第 3 行:
假设我们对从C3到J3的连续空白感兴趣:
我们可以用“帮助”行标记连续的空白,在D4中输入:
=IF(AND(D3="",OR(C3="",E3="")),"X","")
并将其复制到单元格I4。
然后在另一个单元格中输入:
=COUNTIF(C4:J4,"=X")
如果您使用 VBA 用户定义函数,我们可以避免“帮助”行:
Option Explicit
Public Function consecb(rng As Range) As Long
Dim nFirst As Long, nLast As Long, i As Long
Dim roww As Long
nFirst = rng.Find(what:="*", after:=rng(1)).Column
nLast = rng.Find(what:="*", after:=rng(1), searchdirection:=xlPrevious).Column
roww = rng.Row
For i = nFirst + 1 To nLast - 1
If Cells(roww, i) = "" And (Cells(roww, i - 1) = "" Or Cells(roww, i + 1) = "") Then
consecb = consecb + 1
End If
Next i
End Function
在工作表中,您可以像这样使用它:
=consecb(3:3)
于 2020-06-01T12:52:34.390 回答


