2014-04-29 162 views
0

我的rng1只包含列A中最後一個單元格的非空單元格。我想計算比rng1中B1值大的單元格。然而,這個公式沒有起作用,並顯示錯誤是由於空單元。Countif與列中最後一個非空單元格的選擇

Sub CountRng1() 
Dim rng1 As Range 
Set rng1 = Range(Range("A2"), Range("A2").End(xlDown)) 
Range("C1").formula="=countif(rng1,"">""&B1)" 
End Sub 

excel table

回答

1

使用xlDown非常不可靠。用這個來代替:

Sub CountRng1() 
    Dim lastrow As Long 
    Dim rng1 As Range 

    lastrow = Cells(Rows.Count, "A").End(xlUp).Row 
    Set rng1 = Range("A2:A" & lastrow) 
    Range("C1").Formula = "=COUNTIF(" & rng1.Address & ","">"" & B1)" 
End Sub 

閱讀請:How to determine last used row/column

而且我suggets你完全限定的範圍,即改變Range("A1")ThisWorkbook.Worksheets("sheetName").Range("A1")

+0

當我保存在我的個人宏工作簿中的所有宏,我想這不一定是完全限定範圍,我說得對嗎? –

+0

我會說它使得它更加必要,但不是'ThisWorkbook'使用'ActiveWorkbook'而不是指定工作表,使用'ActiveSheet' – tigeravatar

+0

@AmandaS,你是對的,如果你打算總是使用這個宏在_active wroksheet_中,現在就保留它,'Set rng1 = Range(「A2:A」&lastrow)' –

相關問題