【问题标题】:Counting cells using Excel VBA which are a result of a vlookup statement使用 Excel VBA 计数单元格,这是 vlookup 语句的结果
【发布时间】:2017-10-30 10:40:27
【问题描述】:

我在一张纸上有一个电子表格,其中 C 列中的值是使用 vlookup 语句的结果从我在 A 列中输入的值生成的。

在我输入所有值后,我需要能够计算 C 列中最多 51 行(从第 1 行到第 51 行)中包含值的单元格的数量,不包括错误在 A 列中。

哦 - 顺便说一下,每次我进行计数都会使用不同的行数。

我尝试过使用:

ccc = Range("C:C").Cells.SpecialCells(xlCellTypeConstants).Count

但这只计算第一行,即我的标题行。

抱歉,如果那里已经有答案,但我已经找了很长时间,但找不到任何东西。

谢谢。

【问题讨论】:

    标签: vba excel count vlookup


    【解决方案1】:

    您可以在没有 VBA 的情况下轻松做到这一点,但您可以尝试:

    sub testy()
    dim myRange as range
    dim numRows as long
    
    Set myRange = Range("C:C")
    numRows = Application.WorksheetFunction.CountA(myRange) - _
    myRange.SpecialCells(xlCellTypeFormulas, xlErrors).Count
    
    end sub
    

    您的代码不起作用,因为xlCellTypeConstants 明确告诉它只计算常量值,忽略公式计算的值。

    【讨论】:

    • 你说得对,我已经进行了编辑。现在,我在这台电脑上没有 excel,所以也许他可以用SpecialCells(xlCellTypeFormulas - xlErrors) 计算。我从来没有在那里尝试过减法运算符,只有加法 - 也许它会起作用。
    • 这就是我在没有安装 Excel 的电脑上回答问题的结果,哈哈。
    • 但是您仍然需要为标题减去 1(因为它将包含在 CountA 中但不包含在 SpecialCells 中。(我现在将添加我的 +1 - OP 可以计算出如何即使您不再编辑答案,也要减去一个。)
    • 这就是你听我说的!
    • 完美。非常感谢。
    【解决方案2】:

    工作表函数CountA 只计算具有值的单元格:

    =CountA(C1:C51)
    

    我们可以使用 WorksheetFunction 函数从 VBA 调用任何工作表函数:

    dim c as integer
    c = WorksheetFunction.CountA([C1:C51])
    

    CountIf 可用于跳过错误:

    Skip errors with:  `=COUNTIF(D5:D9,">0")`
    

    【讨论】:

      【解决方案3】:

      您正在计算没有错误的单元格。 用以下公式替换您的 vlookup。所以所有的错误都会被“NOT FOUND”文本代替

      =IFERROR(VLOOKUP(C1,A1:B3,2,FALSE), "NOT FOUND")
      

      然后添加这个以查找非空白且非错误的单元格的数量

      =COUNTA(D:D) - COUNTIF(D:D,"NOT FOUND")
      

      假设:-

      A:B 源范围

      C 查找列

      D vlookup 函数在此列

      对于 VBA

      cnt = Application.WorksheetFunction.CountA(D:D) - Application.WorksheetFunction.Countif(D:D, "NOT FOUND")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-18
        • 1970-01-01
        • 1970-01-01
        • 2012-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多