检测范围是否为空,并返回非空行的索引
我想编写一个VBA代码来检查Excel中的Range是否为空,如果不是,那么非空的行是什么。 这个问题10811121回答如何检查Range("A1:L1000")
是否为空:
WorksheetFunction.CountA(Range("A1:L1000"))
如果范围不是空的,我想确定非空行的索引。 在行中有多less个单元格不是空的也没关系。 一种解决scheme是逐个检查范围内的每一行是否为空,但是我想知道是否有没有循环的更简单的解决scheme。
使用Range.SpecialCells方法快速查找范围中的所有非公式,填充值。
set rng = Range("A1:L1000").SpecialCells(xlCellTypeConstant)
我会循环。 代码很简单:
Sub dural() Dim i As Long, msg As String For i = 1 To 1000 If Application.WorksheetFunction.CountA(Range("A" & i & ":L" & i)) > 0 Then msg = msg & "," & i End If Next i MsgBox msg End Sub
如果你真的有循环的问题:
Dim vResult Dim sFormula As String With Range("A1:L1000") sFormula = "IF(SUBTOTAL(3,OFFSET(" & .Address & ",ROW(" & .Address & ")-MIN(ROW(" & .Address & _ ")),0,1))>0,ROW(" & .Address & "),""|"")" End With Debug.Print sFormula vResult = Filter(Application.Transpose(Evaluate(sFormula)), "|", False)