【问题标题】:Countif with selection to the last non-empty cell in a columnCountif 选择到列中的最后一个非空单元格
【发布时间】:2022-03-27 03:30:43
【问题描述】:

我的 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

【问题讨论】:

    标签: vba formula


    【解决方案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

    另外我建议您完全限定您的范围,即将Range("A1") 更改为ThisWorkbook.Worksheets("sheetName").Range("A1")

    【讨论】:

    • 当我将所有宏保存在我的个人宏工作簿中时,我想不一定要完全限定范围,对吗?
    • 我会说这使它变得更加必要,但是不要使用ThisWorkbook 使用ActiveWorkbook 并且不要指定工作表,而是使用ActiveSheet
    • @AmandaS,你是对的,如果你要一直在 active wroksheet 中使用这个宏,就保持现在的状态,Set rng1 = Range("A2:A" & lastrow)跨度>
    猜你喜欢
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 2021-12-03
    • 2011-12-28
    相关资源
    最近更新 更多