Vba Countif,选择列中最后一个非空单元格

Vba Countif,选择列中最后一个非空单元格,vba,formula,Vba,Formula,我的rng1只包含A列最后一个单元格的非空单元格。我希望计算的单元格数大于rng1中B1中的值。然而,这个公式不起作用,显示错误是由于空单元格造成的 Sub CountRng1() Dim rng1 As Range Set rng1 = Range(Range("A2"), Range("A2").End(xlDown)) Range("C1").formula="=countif(rng1,"">""&B1)" End Sub 使用xlDown非常不可靠。改用这个: Sub

我的rng1只包含A列最后一个单元格的非空单元格。我希望计算的单元格数大于rng1中B1中的值。然而,这个公式不起作用,显示错误是由于空单元格造成的

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

使用
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
请阅读以下内容:


我还建议您完全限定您的范围,即将
范围(“A1”)
更改为
此工作簿。工作表(“sheetName”)。范围(“A1”)

当我在我的个人宏工作簿中保存所有宏时,我想不一定要完全限定范围,对吗?我会说这更必要,但是不要使用
ThisWorkbook
使用
ActiveWorkbook
,也不要指定工作表,而是使用
ActiveSheet
@AmandaS,你是对的,如果你想一直在活动工作表中使用这个宏,就让它保持现在的状态,
设置rng1=Range(“A2:a”&lastrow)