2015-10-19 58 views
0

的指標,我想編寫VBA代碼,以檢查是否在Excel中的一個範圍是空的,如果沒有,什麼是它的非空行。 這個問題的答案10811121如何檢查是否Range("A1:L1000")爲空:檢測並返回非空行

WorksheetFunction.CountA(Range("A1:L1000")) 

如果範圍不是空的,我想確定非空行的索引。在行中有多少個單元格不是空的並不重要。 一個解決方案是逐個檢查範圍中的每一行是否爲空,但我想知道是否有沒有循環的更簡單的解決方案。

+1

什麼是不容易的有關循環? – Rory

回答

1

使用Range.SpecialCells method快速找到所有非公式,填充值的範圍。

set rng = Range("A1:L1000").SpecialCells(xlCellTypeConstant) 
+0

謝謝@Jepped,這就是我正在尋找。 – MeSS83

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 

enter image description here

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) 
+0

嗨Rory這是令人印象深刻的,我試圖找出這個公式如何工作,但對我來說這是純粹的魔術:) – MeSS83