使用Excel VBA对单元格进行计数,这是vlookup语句的结果



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

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

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

我试过使用:

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

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

抱歉,如果已经有答案,但是我已经寻找了一段时间,但找不到任何东西。

谢谢。

您可以在没有 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专门告诉它只计算常量值,忽略公式计算值。

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

=CountA(C1:C51)

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

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

CountIf可用于跳过错误:

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

您要对没有错误的单元格进行计数。用下面的公式替换你的 vlookup。因此,所有错误都将替换为"未找到"文本

=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")

相关内容

最新更新