我想写一个VBA代码来检查Excel中的Range是否为空,如果不是,那么哪些行是非空的。
此问题10811121解答了如何检查Range("A1:L1000")
是否为空:
WorksheetFunction.CountA(Range("A1:L1000"))
如果Range不为空,我想确定非空行的索引。行中有多少个单元格是非空的并不重要。 一种解决方案是逐个检查范围中的每一行是否为空,但我想知道是否有更简单的解决方案而没有循环。
答案 0 :(得分:1)
我会循环。代码很简单:
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
答案 1 :(得分:1)
如果确实出现循环问题:
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)
答案 2 :(得分:1)
使用Range.SpecialCells method快速查找您范围内的所有非公式,填充值。
set rng = Range("A1:L1000").SpecialCells(xlCellTypeConstant)